【问题标题】:calling function in for and foreach loop failing in PHP在 PHP 中的 for 和 foreach 循环中调用函数失败
【发布时间】:2011-10-26 13:23:32
【问题描述】:

我有一个数组,我正在使用 for 循环对其进行迭代。数组的每个元素都有 URL,需要作为参数传递给函数。

当我在迭代期间调用函数时,循环在第一次迭代后停止并且不会在整个数组上继续。

当我尝试只回显数组中的值并且不调用循环中的函数时,它可以正常工作。

如果我使用 foreach 循环,这也是同样的问题。请帮忙。

这是我的代码

echo '<ol>';
for($i=0; $i < count($watchList); $i++){
    saveProduct(getProductDetail($watchList[$i]));
    echo ' <li>Product Saved '. $watchList[$i] .'</li>';
}
echo '</ol>';

【问题讨论】:

  • count($watchList)的值是多少?
  • 以任何方式修改saveProductgetProductDetail 吗?
  • 288 项如果我评论函数调用并且只在函数后回显以下行我看到所有迭代输出。
  • getProductDetail 正在返回一个数组,并且 saveProduct 正在 MySql DB 上执行 SQL。 saveProduct 接受关联数组的参数。

标签: php function foreach


【解决方案1】:

数组可能不是连续的。您假设它从 0-n 开始,但情况可能并非如此。使用它,它应该可以工作:

echo '<ol>';
foreach($watchList as $key=>$watchItem){
    saveProduct(getProductDetail($watchItem));
    echo ' <li>Product Saved '. $watchItem .'</li>';
}
echo '</ol>';

【讨论】:

    【解决方案2】:

    循环没有问题。你调用的函数一定有问题。

    如果您还没有开启错误报告功能,请尝试开启。

    ini_set(‘error_reporting’, E_ALL);
    ini_set(‘display_errors’, 1);`
    

    【讨论】:

      【解决方案3】:
      error_reporting(E_ALL );
      ini_set('display_errors', '1');
      

      将上面的代码添加到您的代码中,看看有什么问题?

      foreach($watchList as $value){
          saveProduct(getProductDetail($value));
          echo ' <li>Product Saved '. $value .'</li>';
      
      }
      

      【讨论】:

      • 令人惊讶的是,在第一次迭代的结果中,数据保存在数据库中,但循环失败
      【解决方案4】:

      这是因为您的数组键在循环的每次迭代中都与 $i 的值不匹配,大概是因为您的数组键不是顺序整数。毫无疑问,输出(当你调用函数时)只是打印 'Product Saved' 因为 $watchList[$i] 为 NULL。

      您只是试图将数组中的值传递给该函数,因此请按以下方式进行操作,键是什么无关紧要;

      echo '<ol>';
      foreach($watchlist as $key => $item){
          saveProduct(getProductDetail($item));
          echo ' <li>Product Saved '. $item .'</li>';
      }
      echo '</ol>';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-14
        • 2019-08-02
        • 2014-05-29
        • 2014-07-25
        • 1970-01-01
        • 1970-01-01
        • 2020-08-10
        相关资源
        最近更新 更多