PHP 注意:数组到字符串的转换仅在 PHP 7
PHP Notice: Array to string conversion only on PHP 7
我是PHP的新手。我是从php.net
开始研究的,今天发现一个问题。
class foo {
var $bar = 'I am bar.';
}
$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo "{$foo->$bar}\n";
echo "{$foo->$baz[1]}\n";
文档(http://php.net/manual/en/language.types.string.php)说上面的例子会输出:
I am bar.
I am bar.
但是我在我的电脑上得到了不同的输出 运行(PHP 7):
I am bar.
<b>Notice</b>: Array to string conversion in ... on line <b>9</b><br />
<b>Notice</b>: Undefined property: foo::$Array in ... on line <b>9</b><br />
为什么?
这应该适用于 PHP 7:
class foo {
var $bar = 'I am bar.';
}
$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo "{$foo->$bar}\n";
echo "{$foo->{$baz[1]}}\n";
这是因为在PHP5下面一行:
echo "{$foo->$baz[1]}\n";
解释为:
echo "{$foo->{$baz[1]}}\n";
而在 PHP 7 中,它被解释为:
echo "{{$foo->$baz}[1]}\n";
因此在 PHP 7 中,它将整个数组传递给 $foo
而不仅仅是那个元素。
只需将数组分配给一个变量,然后在函数调用中使用该变量。那行得通...我以这种方式解决了这个问题。
因为当到达 PHP 7 时,当我们在函数调用中直接使用它时,它将传递整个数组。
EX:
$fun['myfun'](); // Will not work on PHP7.
$fun_name = $fun['myfun'];
$fun_name(); // Will work on PHP7.
我是PHP的新手。我是从php.net
开始研究的,今天发现一个问题。
class foo {
var $bar = 'I am bar.';
}
$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo "{$foo->$bar}\n";
echo "{$foo->$baz[1]}\n";
文档(http://php.net/manual/en/language.types.string.php)说上面的例子会输出:
I am bar.
I am bar.
但是我在我的电脑上得到了不同的输出 运行(PHP 7):
I am bar.
<b>Notice</b>: Array to string conversion in ... on line <b>9</b><br />
<b>Notice</b>: Undefined property: foo::$Array in ... on line <b>9</b><br />
为什么?
这应该适用于 PHP 7:
class foo {
var $bar = 'I am bar.';
}
$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo "{$foo->$bar}\n";
echo "{$foo->{$baz[1]}}\n";
这是因为在PHP5下面一行:
echo "{$foo->$baz[1]}\n";
解释为:
echo "{$foo->{$baz[1]}}\n";
而在 PHP 7 中,它被解释为:
echo "{{$foo->$baz}[1]}\n";
因此在 PHP 7 中,它将整个数组传递给 $foo
而不仅仅是那个元素。
只需将数组分配给一个变量,然后在函数调用中使用该变量。那行得通...我以这种方式解决了这个问题。
因为当到达 PHP 7 时,当我们在函数调用中直接使用它时,它将传递整个数组。
EX:
$fun['myfun'](); // Will not work on PHP7.
$fun_name = $fun['myfun'];
$fun_name(); // Will work on PHP7.