У меня есть PHP Script, который работает довольно хорошо, за исключением того, что я получаю это сообщение об ошибке
Undefined index: Array in [...]/exp.php on line 239
На этой строке есть этот код:
$out_kostenstelle = $kostenstellen[$nextShift["kostenstelle"]][1].
"(".$nextShift["kostenstelle"].")";
Я думаю, что единственная часть, где может быть массив как индекс, это та часть, где $nextShift["kostenstelle"]
индекс для $kostenstellen
,
Однако, когда я пытаюсь поймать эту часть (она находится в цикле со многими сотнями запусков, поэтому я не могу проверить это вручную) с помощью этого кода, мой сценарий никогда не входит в часть внутри if
пункт
if(is_array($nextShift["kostenstelle"]))
{
echo "<pre>";
var_dump($nextShift);
echo "</pre>";
die();
}
Это не имеет никакого смысла для меня, и я попробовал много вещей. безуспешно.
Я думаю, что этого может быть достаточно кода, где может быть ошибка, но на всякий случай здесь структура $kostenstellen
а также $nextShift
Kostenstellen:
array(2) {
[100]=>
array(2) {
[0]=>
string(3) "100"[1]=>
string(11) "Company A"}
[200]=>
array(2) {
[0]=>
string(3) "300"[1]=>
string(12) "Company B"}
}
и nextShift:
array(4) {
["id"]=>
string(2) "168"["start_unix"]=>
string(10) "1466780000"["end_unix"]=>
string(10) "1466812400"["kostenstelle"]=>
string(3) "100"}
Обойти это невозможно: проблема в том, что индекс, который вы пытаетесь использовать, сам по себе является массивом.
Когда вы получаете доступ к массиву в PHP, $array[$index]
PHP будет пытаться его преобразовать в строку, если он не является строковым или числовым. Стрификация массива дает литерал "Array"
; как у вас здесь.
тем не мение, есть еще одна возможность: когда вы запускаете цикл, массив уже был преобразован в строку. Это означает, что где-то раньше кто-то бросил это в строку.
Вы можете проверить, если с таким если:
if(is_array($nextShift["kostenstelle"]) || $nextShift["kostenstelle"] == "Array")
{
echo "<pre>";
var_dump($nextShift);
echo "</pre>";
die();
}
Других решений пока нет …