【问题标题】:ternary operator processing error laravel三元运算符处理错误 laravel
【发布时间】: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


【解决方案1】:

设置时使用

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

【讨论】:

    【解决方案2】:

    确实,在这种情况下,使用 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) : ('') ) ])
                                         ) 
            );
    }
    

    【讨论】:

      猜你喜欢
      • 2021-09-07
      • 2012-03-11
      • 2018-04-11
      • 2014-05-03
      • 2017-05-12
      • 2012-11-19
      • 1970-01-01
      • 2015-06-10
      • 2013-06-24
      相关资源
      最近更新 更多