sách gpt4 ai đã đi

Độ lệch không xác định khi tạo/thêm giá trị mảng đa chiều

In lại 作者:行者123 更新时间:2023-12-03 07:50:19 27 4
mua khóa gpt4 Nike

我正在使用与此类似的代码动态添加到数组;

 $arrayF[$f+1][$y][$x+1] = $value+1;

但是我在错误报告中收到了这个:

undefined offset :1

问题:尝试创建数组值时,为什么会得到 undefined offset ?

tôi phải làm gì?

进一步的信息(如果相关):
它发生在循环中,因此我正在通过masterArray进行“扩展”
if (is_array($arrayF[$f])){ 
foreach ($arrayF[$f] as $key2 => $arrayF2) {
$y = $key2;
foreach ($arrayF2 as $key3 =>$value) {
$x = $key3;
if (($y<=100)&& ($y>=1)&&($x<=100)&&($x>=1)){
if ($value < $arrayMaster[$y][$x]) {
$arrayMaster[$y][$x] = $value;//resets value in a master array
$arrayF[$f+1][$y][$x+1] = $value+1;//creates a new array for F to 'sprawl' with
$max = $f+1;
}
}
}
}
}

1 Câu trả lời

很简单,因为执行以下操作:$arrayF[$f+1][$y][$x+1] = $value+1;,不能确定$arrayF[$f+1]是有效的偏移量/索引/键。您只知道is_array($arrayF[$f])是真实的。

解决方法非常简单:

if (!isset($arrayF[$f+1]) || !is_array($arrayF[$f+1])) {
$arrayF[$f+1] = array(
$y => array()
);
} else if (!is_array($arrayF[$f+1][$y])) {
$arrayF[$f+1][$y] = array();
}
$arrayF[$f+1][$y][$x+1] = $value+1;

现在您为什么收到通知?这是因为,如果 $arrayF[$f+1]不存在,当您执行诸如 $arrayF[$f+1] = 'foobar';这样的简单分配时,PHP会为您高兴地创建它。但是,您正在访问一个(可能)不存在的偏移量(该偏移量的结果为 vô giá trị),并尝试将其用作数组: $arrayF[$f+1][$y],如果 $arrayF[$f+1]不存在,则那里没有 $y索引,因此请注意:PHP会警告您代码中可能存在错误

làm mới:
如以下注释中所述: is_array可以产生 undefined offset 通知,因为它假定您传递给它的参数确实存在。为了避免产生此类通知,需要对 isset进行检查,因此我已相应地更新了上面的代码。

关于php - 创建/添加多维数组值时的未定义偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544823/

27 4 0