【问题标题】:how to suppress foreach() warnings php如何抑制foreach()警告php
【发布时间】:2012-07-13 12:29:33
【问题描述】:

我需要帮助来抑制我从 foreach() 收到的警告

Warning: Invalid argument supplied for foreach() in 
/sitename/pages/admin/questions/index.php

我得到了我想要的结果。我只需要删除警告...

这是我的代码:

for($i = 1; $i <= $RESULTS_count; $i++){

$rawResult = $wpdb->get_row(
                $wpdb->prepare("SELECT * FROM ".WPSQT_TABLE_RESULTS." WHERE id = $i"),ARRAY_A);

$rawResult['sections'] = unserialize($rawResult['sections']);

     foreach($rawResult['sections'] as $result_sections){
         if($result_sections['answers'][1]['mark'] == 'correct') $correct_answer++;
    }
}
echo $correct_answer/$RESULTS_count;

如果我将代码从 FOR 循环中取出并将 WHERE id = $i 替换为 WHERE id = 1 它将起作用...问题可能是 FOREACH 不喜欢在 FOR 循环中吗?

你觉得我应该怎么做?

编辑:我认为我收到的警告是由于我删除了 ID 为 2 的结果,因此当循环遍历表行时,其中一个为空,这就是我收到警告的方式...

【问题讨论】:

  • 为什么不修复代码以消除警告?
  • 我不认为我可以,因为我拥有的数据......
  • 你能发布 var_dump($rawResult['sections']); 的输出吗? 你反序列化数据之后?
  • 它太长了……但它是一个多维数组。顺便说一句,杰里米的回答解决了这个问题。

标签: php wordpress loops for-loop foreach


【解决方案1】:

您应该首先确保数据是一个数组或将其类型转换为一个数组。

是数组:

    if (is_array($rawResult['sections'])) {
        foreach ($rawResult['sections'] as $result_sections) {
            if ($result_sections['answers'][1]['mark'] == 'correct')
                $correct_answer++;
        }
    }

类型转换:

    foreach ( (array) $rawResult['sections'] as $result_sections) {
        if ($result_sections['answers'][1]['mark'] == 'correct')
            $correct_answer++;
    }

【讨论】:

    猜你喜欢
    • 2018-07-11
    • 1970-01-01
    • 2017-06-10
    • 2011-04-17
    • 2019-02-25
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多