fix(php): 修复 isset 多变量检查问题

- 实现多变量 isset 检查的正确逻辑
- 添加遍历变量列表并逐个解析的功能
- 使用逻辑与操作符连接多个 isset 检查结果
- 添加 isset-002 测试用例验证多变量检查行为
pull/1/head
韩天峰 6 months ago
parent cc1b476a31
commit f12ceb1713
  1. 6
      src/Php/CompilerBase.php
  2. 17
      tests/aot/isset-002.phpt

@ -3197,7 +3197,11 @@ class CompilerBase extends \PhpAot\Core\Translator
{
$vars = $expr->vars;
if (count($vars) > 1) {
$this->fatalError($expr, 'Cannot check multiple variables with isset');
$list = [];
foreach ($vars as $var) {
$list[] = $this->parseVarCheckExpr($var, 'isset');
}
return '(' . implode(' && ', $list) . ')';
}
return $this->parseVarCheckExpr($vars[0], 'isset');
}

@ -0,0 +1,17 @@
--TEST--
isset 002
--FILE--
<?php
$array1 = [ 2000, 0, ];
$array2 = [ 2022, null, ];
var_dump(isset($array1[0], $array2[0]));
var_dump(isset($array1[1], $array2[1]));
var_dump(isset($array1[1], $array2[0]));
var_dump(isset($array1[0], $array2[1]));
?>
--EXPECT--
bool(true)
bool(false)
bool(true)
bool(false)
Loading…
Cancel
Save