使用变量引用时出错。我错过了一些明显的东西吗?
...基本上
$required = array();
$optional = array();
foreach($things as $thing){
$list =& $thing->required ? $required : $optional;
$list[] = $thing;
}
(通过事物列表循环,如果事物的必需属性为真,则将该事物传递给所需事物列表,其他事物将其传递给可选事物列表......)
tyia
答案 0 :(得分:1)
从它的外观来看,似乎你正试图将所需的或可选的东西分成不同的数组。
<?php
foreach ( $things as $thing )
{
if ( $thing->required )
$required[] = $thing;
else
$optional[] = $thing;
}
如果你坚持在一行上做,你可以这样做:
<?php
foreach ( $things as $thing )
${$thing->required ? 'required' : 'optional'}[] = $thing;
您的代码存在问题$list =& $thing->required ? $required : $optional;
。 PHP忽略? $required : $optional
部分正在为$list
分配$ this-&gt;。当您尝试在其上添加数组时,$list
是标量而不再是数组,因此它失败了。我能想到解决这个问题的唯一方法是使用上面的解决方案之一,或创建通过引用返回数组的函数。
参考:来自http://php.net/manual/en/language.operators.comparison.php:
请注意三元运算符 是一个声明,它没有 评估变量,但是 声明的结果。这是 重要的是要知道你是否愿意 通过引用返回变量。该 语句返回$ var == 42? $ a:$ b; 在按引用返回的功能中 因此不起作用,并发出警告 在以后的PHP版本中发布。