PHP 数组作为没有数组的索引
PHP Array as index without array
我有一个 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"
}
没有办法解决:问题是您尝试使用的索引本身就是一个数组。
当您访问 php 中的数组时,如果它不是字符串或数字,$array[$index]
、PHP 将尝试对其进行字符串化。字符串化数组给出文字 "Array"
;就像你在这里一样。
但是,还有另一种可能性:当你运行你的循环时,数组已经被字符串化了。这意味着之前某个地方,有人将它转换为字符串。
你可以用这样的 if 检查是否:
if(is_array($nextShift["kostenstelle"]) || $nextShift["kostenstelle"] == "Array")
{
echo "<pre>";
var_dump($nextShift);
echo "</pre>";
die();
}
我有一个 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"
}
没有办法解决:问题是您尝试使用的索引本身就是一个数组。
当您访问 php 中的数组时,如果它不是字符串或数字,$array[$index]
、PHP 将尝试对其进行字符串化。字符串化数组给出文字 "Array"
;就像你在这里一样。
但是,还有另一种可能性:当你运行你的循环时,数组已经被字符串化了。这意味着之前某个地方,有人将它转换为字符串。
你可以用这样的 if 检查是否:
if(is_array($nextShift["kostenstelle"]) || $nextShift["kostenstelle"] == "Array")
{
echo "<pre>";
var_dump($nextShift);
echo "</pre>";
die();
}