这个foreach代码有什么问题吗?

时间:2010-08-29 13:17:24

标签: php programming-languages

foreach ($data['tests'] as $testname => $tests) {
echo "<h1>Extraction $testname Tests</h1>\n";
$function = $testfunctions[$testname];

echo "<ul>";
foreach ($tests as $test) {
    echo "<li>" . $test['description'] . ' ... ';
    $extracted = $extractor->$function($test['text']);
    if ($test['expected'] == $extracted) {
        echo " <span style='color: green'>passed.</span></li>";
    } else {
        echo " <span style='color: red'>failed.</span>";
        echo "<pre>Original: " . htmlspecialchars($test['text']) . "\nExpected: " . print_r($test['expected'], true) . "\nActual  : " . print_r($extracted, true) . "</pre>";
    }
    echo "</li>";
}
echo "</ul>";}

我一直收到错误:

  

警告:提供的参数无效   foreach()in   C:\ xampp \ htdocs \ test \ runtests.php on   第49行

P.S。代码的开头是第49行,因此probelm以foreach语句开头。

2 个答案:

答案 0 :(得分:3)

每当我看到它时,它往往意味着我试图迭代的东西不是数组。

检查$data['tests'](以及每个内部$tests)以确保它不是null / unset / empty,并且它可以像数组一样迭代。还要记住,旧版本的PHP(5.0之前的版本?)不能很好地处理可迭代对象。

答案 1 :(得分:1)

$data["tests"]中的一个元素可能不是数组。

在foreach之前添加:

if (is_array($tests))
 foreach ($tests as $test) {...