【发布时间】:2017-09-05 12:38:14
【问题描述】:
我有这个问题。在普通 PHP 中,此函数运行良好并返回正确结果:
$focos_3[ (array_search("$c", $cidades_3) ? array_search("$c", $cidades_3) : ('') ) ]
OBS: 有时 $c 未设置。
但是当我把它放在 Laravel 中时,它停止工作并抛出“未定义的索引:”。没有索引指示。
做了一些测试,我发现如果我这样做:
array_search("$c", $cidades_3)
或者这个
in_array("$c", $cidades_3)
即使没有设置 $c 也能完美运行。
一些答案:
$cidades_3 从索引 1 开始 $focos_3 是一组值,将返回所请求位置的结果。
我需要开始工作的整个功能是这样的:
foreach ($cidades as $c)
{
$registros = array(
"Estado" => $estados[$c],
"Municipio" => $c,
"tres_dias" => $focos_3[ (array_search("$c", $cidades_3) >=0 ? array_search("$c", $cidades_3) : ('') ) ],
"dois_dias" => $focos_2[ (array_search("$c", $cidades_2) >=0 ? array_search("$c", $cidades_2) : ('') ) ],
"um_dia" => $focos_1[ (array_search("$c", $cidades_1) >=0 ? array_search("$c", $cidades_1) : ('') ) ],
"total" => (
($focos_3[ (array_search("$c", $cidades_3) >=0 ? array_search("$c", $cidades_3) : ('') ) ]) +
($focos_2[ (array_search("$c", $cidades_2) >=0 ? array_search("$c", $cidades_2) : ('') ) ]) +
($focos_1[ (array_search("$c", $cidades_1) >=0 ? array_search("$c", $cidades_1) : ('') ) ])
)
);
}
是的,它与这个问题 (Laravel breaks entire app on PHP notices) 的问题类似,但是我们没有很好的解决方案(抑制错误)。
【问题讨论】:
-
这似乎是与错误报告选项有关的问题。看看这个:stackoverflow.com/questions/18497788/…
-
如果在 $cidades_3 的索引 0 处找到 $c 会发生什么?或者如果 $c 的值为 'x' 并且数组包含值为 0 的条目(反之亦然)?
-
$focos_3是如何使用的?该错误指出索引''未定义,因此与三元运算符中的array_search无关,而是与(很可能)$focos_3数组上的索引''相关。 -
如果数组搜索返回 0(这可能是有效的),您将得到可能未定义的三元运算符返回的
''。未定义的索引是 PHP 通常吞下或写入某处的警告,但 Laravel 将其视为未处理的异常。
标签: php arrays laravel ternary-operator