三元运算符处理错误 laravel

ternary operator processing error laravel

我有这个问题。在普通 PHP 中,此函数运行完美并且 return 的正确结果:

$focos_3[ (array_search("$c", $cidades_3) ? array_search("$c", $cidades_3) : ('') ) ]

OBS: 有时 $c 未设置。

但是当我把它放在 Laravel 中时它停止工作并扔给我 "Undefined index:"。没有索引指示。

做了一些测试,我发现如果我这样做:

array_search("$c", $cidades_3)

或这个

in_array("$c", $cidades_3)

即使未设置 $c,也能完美运行。

一些答案:

$cidades_3 从索引 1 开始 $focos_3 是值数组,将 return 所请求位置的结果。

我需要开始工作的整个函数是这样的:

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),但是我们没有很好的解决方案(抑制错误)。

如果已设置则使用

if(isset($var){
//execute function
}

确实,在这种情况下,使用 Laravel 可以更轻松地抑制警告消息。 在此处放置“@”解决了错误。

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) : ('') ) ])
                                     ) 
        );
}