注意:未定义的偏移量:创建数组元素时为 1?
Notice: Undefined offset: 1 when creating a Array-Element?
我有一个我无法解释的奇怪行为。我用 foreach
循环一个数组,从它的值创建另一个输出数组:
$tabCount = 0;
$mainDivs = array();
foreach($output as $node) {
$tabCount++;
$mainDivs[$tabCount] .= 'blablabla';
}
输出在那里并且似乎是正确的(没有遗漏)。但是 PHP 给我一个通知:
Notice: Undefined offset: 1 in E:\XAMPP\htdocs\WP\wp-content\plugins\test\php\test.php on line 163
line 163
是我执行 $mainDivs[$tabCount] .= 'blablabla';
的行
怎么可能?我的意思是,我确实创建了数组元素 (?)
该通知是由于您的字符串追加运算符.=
引起的。
所以 PHP 将在将新字符串写入数组之前读取 $mainDivs[$tabCount]
。该读数引起了注意
请尝试
$mainDivs[$tabCount] = 'blablabla';
而不是
$mainDivs[$tabCount] .= 'blablabla';
如果不需要追加字符串 blablabla
.
1) 您正在获取 PHP
notice
,因为您正在尝试访问 array
index
而不是 set
。首先尝试检查 $output
数组是否有值
尝试检查print_r($output);
2) 不要在分配 array
value
时使用 .
简单
$mainDivs[$tabCount] = 'blablabla';
创建方法有以下几种arrays
:
index
可以自动赋值(索引总是从0开始),像这样:
$cars = array("Volvo", "BMW", "Toyota");
或
$cars[] = "Volvo";
$cars[] = "BMW";
$cars[] = "Toyota";
或者手动分配索引:
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
删除点 (.) 如果你使用点意味着它作为连接。
1) 您试图将之前未设置的值连接起来,因此您必须使用 = 删除该连接。
$mainDivs[$tabCount] .= 'blablabla';
改为
$mainDivs[] = 'blablabla';
您不需要编制索引。它自己自动索引,而且它只从零开始。
$mainDivs = array();
foreach($output as $node) {
$mainDivs[] = 'blablabla';
}
.
用于连接而不是数组 assignment.So 删除它
所以代码必须是:-
$tabCount = 0;
$mainDivs = array();
if(isset($output) && count($output)>0){ // Check that your array is set and have values so that foreach will not produce error
foreach($output as $node) {
$mainDivs[$tabCount] = 'blablabla';
$tabCount++;
}
}
注:-
参考:-
字符串连接:- http://php.net/manual/en/language.operators.string.php
不需要在数组赋值中使用连接。
这个:
$mainDivs[$tabCount] .= 'blablabla';
应该是:
$mainDivs[$tabCount] = 'blablabla';
在使用 foreach()
之前还有一个建议,检查数组 count > 0
与否。
示例:
<?php
$tabCount = 0;
$mainDivs = array();
if(count($output) > 0){ // check the count
foreach($output as $node) {
$tabCount++;
$mainDivs[$tabCount] = 'blablabla';
}
}
?>
我有一个我无法解释的奇怪行为。我用 foreach
循环一个数组,从它的值创建另一个输出数组:
$tabCount = 0;
$mainDivs = array();
foreach($output as $node) {
$tabCount++;
$mainDivs[$tabCount] .= 'blablabla';
}
输出在那里并且似乎是正确的(没有遗漏)。但是 PHP 给我一个通知:
Notice: Undefined offset: 1 in E:\XAMPP\htdocs\WP\wp-content\plugins\test\php\test.php on line 163
line 163
是我执行 $mainDivs[$tabCount] .= 'blablabla';
怎么可能?我的意思是,我确实创建了数组元素 (?)
该通知是由于您的字符串追加运算符.=
引起的。
所以 PHP 将在将新字符串写入数组之前读取 $mainDivs[$tabCount]
。该读数引起了注意
请尝试
$mainDivs[$tabCount] = 'blablabla';
而不是
$mainDivs[$tabCount] .= 'blablabla';
如果不需要追加字符串 blablabla
.
1) 您正在获取 PHP
notice
,因为您正在尝试访问 array
index
而不是 set
。首先尝试检查 $output
数组是否有值
尝试检查print_r($output);
2) 不要在分配 array
value
.
简单
$mainDivs[$tabCount] = 'blablabla';
创建方法有以下几种arrays
:
index
可以自动赋值(索引总是从0开始),像这样:
$cars = array("Volvo", "BMW", "Toyota");
或
$cars[] = "Volvo";
$cars[] = "BMW";
$cars[] = "Toyota";
或者手动分配索引:
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
删除点 (.) 如果你使用点意味着它作为连接。
1) 您试图将之前未设置的值连接起来,因此您必须使用 = 删除该连接。
$mainDivs[$tabCount] .= 'blablabla';
改为
$mainDivs[] = 'blablabla';
您不需要编制索引。它自己自动索引,而且它只从零开始。
$mainDivs = array();
foreach($output as $node) {
$mainDivs[] = 'blablabla';
}
.
用于连接而不是数组 assignment.So 删除它
所以代码必须是:-
$tabCount = 0;
$mainDivs = array();
if(isset($output) && count($output)>0){ // Check that your array is set and have values so that foreach will not produce error
foreach($output as $node) {
$mainDivs[$tabCount] = 'blablabla';
$tabCount++;
}
}
注:-
参考:-
字符串连接:- http://php.net/manual/en/language.operators.string.php
不需要在数组赋值中使用连接。
这个:
$mainDivs[$tabCount] .= 'blablabla';
应该是:
$mainDivs[$tabCount] = 'blablabla';
在使用 foreach()
之前还有一个建议,检查数组 count > 0
与否。
示例:
<?php
$tabCount = 0;
$mainDivs = array();
if(count($output) > 0){ // check the count
foreach($output as $node) {
$tabCount++;
$mainDivs[$tabCount] = 'blablabla';
}
}
?>