Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 注意:创建数组元素时未定义的偏移量:1?_Php_Arrays_Notice - Fatal编程技术网

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';        
  }
}

?>