【问题标题】:Second Nested Foreach prints nothing第二个嵌套的 Foreach 什么也不打印
【发布时间】:2016-09-18 03:05:37
【问题描述】:

我需要为这些项目中的每一个列出一个清单,国家打印得很好,但第二个 foreach 打印什么我不明白

   $countries = array('abc','def','ghi' );
    foreach ($countries as $key) {
        echo "<ul> ".$key;
                $character = characters::where('country',$key);
                foreach ($personaje as $p) {
                   echo $ch->name ;
                }
        echo "</ul>";
    }

它应该是这样的,我 100% 保证表的名称和 $key 匹配,我用工匠的修补匠做到了

  • abc {
    -x
    -y
    }
  • def {
    -z
    }
  • ghi {
    }

【问题讨论】:

  • 您在$character = characters::where('country',$key); 和下面的foreach 循环中读取字符,您正在使用$personaje。这是从哪里来的?
  • 正如@linuxartisan 所说,$personaje 不知从何而来。您还必须在构建查询后执行查询;使用$character = characters::where('country',$key)-&gt;get();
  • 是的,很抱歉,因为我没有将 $personaje 翻译成 $character,那一个滑落了。这仍然不是问题,因为它打印了第一个 foreach 但第二个它只是被忽略了,我不知道为什么。它不打印任何东西
  • 那是因为我忘了你使用 ->get();

标签: php laravel


【解决方案1】:

试试这个:

$countries = array('abc','def','ghi' );
foreach ($countries as $key) {
    echo "<ul> ".$key;
            $character = characters::where('country',$key)->get();
            foreach ($character as $ch) {
               echo $ch->name ;
            }
    echo "</ul>";
}

【讨论】:

    【解决方案2】:

    根据您提供的 sn-p,这部分代码存在许多问题:

            $character = characters::where('country',$key);
            foreach ($personaje as $p) {
               echo $ch->name ;
    
    1. 您似乎正在尝试进行查询以获取 $character 变量,但您没有执行它。在末尾添加“get” 声明:

      $character = characters::where('country',$key)->get();

    2. 您的第二个 foreach 循环使用变量 $personaje,它 尚未定义,至少在您提供的代码中。应该 是 $character 吗?

    3. 您的 foreach 循环使用“$personaje as $p”,但您从不使用 循环中的变量 $p。相反,您是在回显 $ch->name。这 您提供的代码中不存在变量 $ch

    【讨论】:

    • 是的,因为我忘了使用 ->get();
    猜你喜欢
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多