Что-то не так с этим кодом foreach? - PullRequest
0 голосов
/ 29 августа 2010
<code>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) . "
"; } echo ""; } echo "";}

Я получаю сообщение об ошибке:

Предупреждение: неверный аргумент указан для foreach () в C: \ xampp \ htdocs \ test \ runtests.php на линия 49

p.s. начало кода - строка 49, поэтому проблема начинается с оценки foreach.

Ответы [ 2 ]

3 голосов
/ 29 августа 2010

Всякий раз, когда я вижу это, это означает, что то, что я пытаюсь перебрать, не является массивом.

Проверьте $data['tests'] (и каждый внутренний $tests), чтобы убедиться, что он не равен null / unset / empty и что он является чем-то итеративным, как массив. Также имейте в виду, что более старые версии PHP (до 5.0?) Не очень хорошо выполняют итерируемые объекты.

1 голос
/ 29 августа 2010

Один из элементов в $data["tests"], вероятно, не является массивом.

Добавьте это перед foreach:

if (is_array($tests))
 foreach ($tests as $test) {...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...