PHP Array как индекс без массива

У меня есть 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"}

0

Решение

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

Когда вы получаете доступ к массиву в PHP, $array[$index]PHP будет пытаться его преобразовать в строку, если он не является строковым или числовым. Стрификация массива дает литерал "Array"; как у вас здесь.

тем не мение, есть еще одна возможность: когда вы запускаете цикл, массив уже был преобразован в строку. Это означает, что где-то раньше кто-то бросил это в строку.

Вы можете проверить, если с таким если:

if(is_array($nextShift["kostenstelle"]) || $nextShift["kostenstelle"] == "Array")
{
echo "<pre>";
var_dump($nextShift);
echo "</pre>";
die();
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]