【问题标题】:PHP foreach loop stops after explodePHP foreach 循环在爆炸后停止
【发布时间】:2014-04-09 08:37:19
【问题描述】:

我有以下嵌套循环。第一个得到manufacturers_name 并且有时该字段中有多个名称,我使用第二个foreach 循环来拆分数组并获取每个制造商的ID。问题是循环在第一个元素$pieces处停止。

循环:

foreach ($items as $v) {
$getname = xtc_db_query("SELECT `manufacturers_name` FROM `manufacturers` WHERE `manufacturers_id`=(SELECT manufacturers_id FROM products WHERE products_id='".$v."')");
$getnameresult= xtc_db_fetch_array($getname);
$pieces = explode(";", $getnameresult[manufacturers_name]);
    foreach ($pieces as $n)
    {
    $getid = xtc_db_query("SELECT `manufacturers_id`  FROM `authors` WHERE      `manufacturers_name` LIKE '".$n."' ");
    $getidresult = xtc_db_fetch_array($getid);
    echo $getidresult['manufacturers_id'];
    echo $n."<br>";
    }   
}

结果:

2Achtzehn, Hans-Jürgen
2Achtzehn, Hans-Jürgen
2Achtzehn, Hans-Jürgen
2Achtzehn, Hans-Jürgen
2Achtzehn, Hans-Jürgen
2Achtzehn, Hans-Jürgen
228Weisenburger, Birgit
228Weisenburger, Birgit
2Achtzehn, Hans-Jürgen
33Müller, Ulrike
Schmitz, Irmgard
Hampel, Heike
Riedel, Sara
Achtzehn, Hans-Jürgen
Krüger, Andreas
Vogt, Melanie

预期结果:

2Achtzehn, Hans-Jürgen
2Achtzehn, Hans-Jürgen
2Achtzehn, Hans-Jürgen
2Achtzehn, Hans-Jürgen
2Achtzehn, Hans-Jürgen
2Achtzehn, Hans-Jürgen
228Weisenburger, Birgit
228Weisenburger, Birgit
2Achtzehn, Hans-Jürgen
33Müller, Ulrike
56Schmitz, Irmgard
77Hampel, Heike
75Riedel, Sara
34Achtzehn, Hans-Jürgen
65Krüger, Andreas
80Vogt, Melanie

【问题讨论】:

    标签: php loops foreach nested-loops


    【解决方案1】:
    foreach ($items as $v) {
    products_id='".$v."'");
    

    改成

    foreach ($items as $v) {
    

    【讨论】:

      【解决方案2】:

      我做了一个 var_dump($pieces) 和 var_dump($n) 来解决问题,结果发现名字前面有一个空格,这就是为什么我没有得到他们的 ID:

      为 $pieces -

      array (size=8)
        0 => string 'Müller, Ulrike' (length=14)
        1 => string ' Schmitz, Irmgard' (length=17)
        2 => string ' Hampel, Heike' (length=14)
        ...
      

      对于 $n -

      string 'Müller, Ulrike' (length=14)
      string ' Schmitz, Irmgard' (length=17)
      string ' Hampel, Heike' (length=14)
      

      修复:

      将以下函数放入我的文档中,然后修剪循环:

      function trim_value(&$value) 
      { 
          $value = trim($value); 
      }
      

      在第二个 foreach 循环之前修剪 $pieces:

      array_walk($pieces, 'trim_value');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-04
        • 2021-09-15
        • 2015-05-09
        • 1970-01-01
        相关资源
        最近更新 更多