我有一个PHP脚本,除了我收到此错误消息
之外,它的工作正常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 :(得分:1)
没有办法解决它:问题是你尝试使用的索引本身就是一个数组。
当您在php $array[$index]
中访问数组时,如果PHP不是字符串或数字,则会尝试对其进行字符串化。对数组进行字符串化可以得到文字"Array"
;就像你在这里一样。
然而,还有另一种可能性:当您运行循环时,数组已经字符串化。它意味着之前的某个地方,有人把它变成了一个字符串。
你可以检查是否有这样的:
if(is_array($nextShift["kostenstelle"]) || $nextShift["kostenstelle"] == "Array")
{
echo "<pre>";
var_dump($nextShift);
echo "</pre>";
die();
}