Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php将var与_Php_Variables_Concatenation_Nodes - Fatal编程技术网

如何使用php将var与

如何使用php将var与,php,variables,concatenation,nodes,Php,Variables,Concatenation,Nodes,您好,我有这个代码$node->field['un'],但是这个句子重复了很多次,我想这样做: $varstring="value"; node->$varstring['un']; 但我做不到,我怎么能为我的var$varstring替换字段我想用$varstring替换字段 您能帮助我吗?如果您使用的是PHP7,那么$node->$varstring['un']将按照您的预期工作。在PHP7之前,您需要使用大括号强制执行这样的求值顺序$node->{$varstring}['un']

您好,我有这个代码$node->field['un'],但是这个句子重复了很多次,我想这样做:

$varstring="value";
node->$varstring['un'];
但我做不到,我怎么能为我的var$varstring替换字段我想用$varstring替换字段


您能帮助我吗?

如果您使用的是PHP7,那么$node->$varstring['un']将按照您的预期工作。在PHP7之前,您需要使用大括号强制执行这样的求值顺序$node->{$varstring}['un'],否则,在PHP5中,它被读取为$node->{$varstring['un']},它假定$varstring是一个数组,并尝试在该数组中找到一个名为'un'的键,以将结果值交还给$node

下面是一个例子以及PHP5和PHP7之间的区别

PHP5中的错误方法 在PHP5中,您可以得到

PHP Warning: Illegal string offset 'un' in /tmp/test.php code on line 9 Warning: Illegal string offset 'un' in /tmp/test.php code on line 9 array(1) { ["un"]=> string(4) "a.un" } 在PHP5或PHP7中,您可以得到

string(4) "a.un" string(4) "a.un" 在PHP7中,您可以得到

string(4) "a.un" string(4) "a.un" 为PHP7做准备 如果您使用大括号,它将与PHP5保持向后兼容,并且在PHP7中仍然保持向前兼容。因此,您肯定应该为PHP7准备任何现有的代码,因为PHP5将在不久的将来(可能在一年或两年内)推出


如果您想进一步了解该语法,将调用该语法。简单地说,记住这一点的最简单方法是,在PHP7中,每个变量表达式都是从左到右读取的,而在PHP5中,您会遇到一些不一致的情况,比如在您的示例中,有些部分是从左到右的,有些部分是从右到左的;您只需创建一个引用$var&=$node->field,然后访问$var['un']。对我来说似乎是一个更干净的解决方案。 string(4) "a.un"