Php 注意:创建数组元素时未定义的偏移量:1?
我有一种奇怪的行为,我无法解释。我使用Php 注意:创建数组元素时未定义的偏移量:1?,php,arrays,notice,Php,Arrays,Notice,我有一种奇怪的行为,我无法解释。我使用foreach循环一个数组,以根据其值创建另一个输出数组: $tabCount = 0; $mainDivs = array(); foreach($output as $node) { $tabCount++; $mainDivs[$tabCount] .= 'blablabla'; } 输出在那里并且似乎是正确的(没有遗漏)。但是PHP给了我一个提示: 注意:第163行E:\XAMPP\htdocs\WP\WP content\plug
foreach
循环一个数组,以根据其值创建另一个输出数组:
$tabCount = 0;
$mainDivs = array();
foreach($output as $node) {
$tabCount++;
$mainDivs[$tabCount] .= 'blablabla';
}
输出在那里并且似乎是正确的(没有遗漏)。但是PHP给了我一个提示:
注意:第163行E:\XAMPP\htdocs\WP\WP content\plugins\test\php\test.php中未定义的偏移量:1
第163行
是执行$mainDivs[$tabCount]的行。='blablabla'代码>
这怎么可能?我的意思是,我确实创建了数组元素(?)这个通知是由字符串append操作符引起的。
因此,在将新字符串写入数组之前,PHP将读取$mainDivs[$tabCount]
。那个读数引起了注意
请试一试
$mainDivs[$tabCount] = 'blablabla';
而不是
$mainDivs[$tabCount] .= 'blablabla';
如果不需要附加字符串blablabla
1),您将得到PHP
注意
,因为您正在尝试访问未设置的数组
索引
。首先尝试检查$output
数组是否有值
尝试检查print\r($output)代码>
2) 在分配数组值时不要使用
简单地
$mainDivs[$tabCount] = 'blablabla';
以下是创建数组的方法:
索引可以自动分配(索引总是从0开始),如下所示:
$cars = array("Volvo", "BMW", "Toyota");
或
或者可以手动指定索引:
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
如果使用点意味着其作为连接,请删除点(.)
$mainDivs[$tabCount] .= 'blablabla';
1) 您试图取消之前未设置的值,因此必须使用=删除该取消
$mainDivs[$tabCount] .= 'blablabla';
改为
$mainDivs[] = 'blablabla';
你不需要建立索引。它会自动建立索引,而且只从零开始
$mainDivs = array();
foreach($output as $node) {
$mainDivs[] = 'blablabla';
}
用于连接,而不是用于数组赋值。因此请将其删除
因此,代码必须是:-
$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++;
}
}
注:-
参考:-
字符串连接:-
数组:-无需在数组分配中使用串联
这:
应该是:
$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($node输出){$mainDivs[$tabCount]='blablablabla';$tabCount++;}
删除
并放入$tabCount++代码>分配后无需此=
用于合并而非数组分配打印($output)
先更改此选项。你在这个数组中没有任何东西。我不明白为什么concat-
引起了这个通知。。但就是这样:)。。谢谢!:)很高兴能帮你松脆。::):)
<?php
$tabCount = 0;
$mainDivs = array();
if(count($output) > 0){ // check the count
foreach($output as $node) {
$tabCount++;
$mainDivs[$tabCount] = 'blablabla';
}
}
?>