Php 将变量名和结果保存到字符串中,拆分并比较-但不起作用
我想把文件中的变量作为字符串加载,以后再比较 文件结构: 变量名;结果 e、 g 我加载此文件(工作)并将拆分后的第一项分配给$x,例如Php 将变量名和结果保存到字符串中,拆分并比较-但不起作用,php,Php,我想把文件中的变量作为字符串加载,以后再比较 文件结构: 变量名;结果 e、 g 我加载此文件(工作)并将拆分后的第一项分配给$x,例如 $x = "$arr['x']"; 分析错误:语法错误,意外的“”(T_封装的_和_空格),应为“-”或标识符(T_字符串)或变量(T_变量)或数字(T_NUM_字符串) 然后比较 if ($result == $x) { echo "ok"; } 还是不能这样做? PS:最简单的例子-这就是为什么我从文件中删除了加载,并将其拆分为什么您用双引号编
$x = "$arr['x']";
分析错误:语法错误,意外的“”(T_封装的_和_空格),应为“-”或标识符(T_字符串)或变量(T_变量)或数字(T_NUM_字符串)
然后比较
if ($result == $x)
{
echo "ok";
}
还是不能这样做?
PS:最简单的例子-这就是为什么我从文件中删除了加载,并将其拆分为什么您用双引号编写了附带的
$arr['x']
$x = "$arr['x']";
$x = $arr['x'];
删除此语句中的引号,并使其如下所示
$x = "$arr['x']";
$x = $arr['x'];
因为变量中有表达式,所以需要编写表达式解析器或使用。这就是如何使其与
eval
一起工作:
$vars = array("\$arr['x'];5", "\$a;53", "\$b - \$a;27");
$arr['x'] = 5;
$a = 54;
$b = 81;
foreach ($vars as $var) {
list($x, $result) = explode(';', $var);
if (eval("return $result == $x;")) {
echo "$x = $result\n";
}
else {
echo "$x != $result\n";
}
}
输出
$arr['x'] = 5
$a != 53
$b - $a = 27
此文件的用途是什么?可能有更好的方法可以做到这一点,比如在PHP文件中保存数组。“文件中的变量”-当它在文件中时,它不是变量。这只是一根绳子。php脚本中是否有类似的代码?这听起来很像一个XY问题。它只表明它是一个字符串,它来自文件tnx to all和tnx to you nick&eval-我几个小时前也试过,但我忘了在字符串中使用“;”。。。所以你解决了,救了我一天-tnx alot@Robert很高兴听到。如果这确实回答了你的问题,请考虑标记答案接受(在下/下投票箭头下的复选标记)。我会的,但我需要更多reputation@Robert你不需要任何声誉来接受答案(投票箭头下的勾号),只需要使用投票箭头,通过接受,你实际上会获得声誉(2分)。