未定义索引0 php laravel(可能重复)

时间:2016-10-06 06:35:56

标签: php mysql laravel-5 eloquent

这可能是重复的,但我找不到解决问题的方法。 我正在从数据库中检索少量记录并尝试在视图中显示它们。但总是得到未定义索引:0 异常。 这是控制器代码:

public function gettopfirms(){
    $top = Top::all();
    foreach ($top as $tFirm) {
        $topFirms[] = Firm::whereId($tFirm['id'])->get()->toArray();
    }
    return view('top', compact('topFirms'));
}

这里是view(top.blade.php)代码:

<?php
    foreach ($topFirms as $firm) {
        echo "<pre>";
        print_r($firm[0]); //or $firm[0]['name']
        echo "</pre>";
    }
?>

以下是错误:

Undefined offset: 0 (View: xxxxx/resources/views/top.blade.php)

这时我只是在视图中打印数组

Array
(
 [0] => Array
    (
        [id] => 7092
        [rank] => 147
        [name] => Grupo Grana y Montero (GyM),
     )

)
Array
(
 [0] => Array 
  (
     [id] => 2 //And So On

不知道我做错了什么,挣扎和谷歌搜索,没有找到解决方案。

1 个答案:

答案 0 :(得分:1)

问题是您可能不检查数组是否已设置。所以解决方案应该是这样的,即:

<?php
    foreach ($topFirms as $firm) {
        if (!isset($firm[0])) {
            continue; 
        }

        echo "<pre>";
        print_r($firm[0]); //or $firm[0]['name']
        echo "</pre>";
    }
?>

您可能还想提前过滤掉它,所以在这里:

public function gettopfirms(){
    $top = Top::all();
    foreach ($top as $tFirm) {
        $topFirms[] = Firm::whereId($tFirm['id'])->get()->toArray();
    }
    $topFirms = array_filter($topFirms);
    return view('top', compact('topFirms'));
}