$size=$_POST['size']; //Post
$a=count($size);
for($x=0;$x<$a;$x++)
{
$f=$size[$x];
echo $f;
}
上面的代码返回名为通知的错误:未定义的偏移量:1
假设一个这样的数组:
$size = [
'foo' => 'bar',
'zar' => 'car'
];
在这种情况下,count($size);
将为 2,但索引0
和 1
不存在(它是一个 assoc 数组)。这就是为什么你最好使用foreach
:
foreach ($size as $key => $value)
{
echo '$size[' . $key . '] = ' . $value, PHP_EOL;
}
输出:
$size[foo] = bar
$size[zar] = car
当然,这一切都假设$size
实际上是一个数组。您确实应该首先检查一下:
$size = isset($_POST['size']) && is_array($_POST['size']) ? $_POST['size'] : [];//default to empty array
我建议这样做:
$size=$_POST['size']; //Post
foreach($size as $value) {
print $value;
}
因为它干净简洁
对于多个数组,请使用:
$size=$_POST['size']; //Post
$size1=$_POST['size1']; //Post
foreach(array_combine($size,$size1) as $key=>$value) {
print $key."<br/>".$value."<br/>";
}
当您访问像 $size[$x]
这样的数组时,您正在访问带有偏移$x
的数组$size
。
通知Undefined offset: 1
意味着数组$size
要么不是数组,要么没有元素1
。
就您而言,我认为$size
是:
-
关联数组。这意味着它没有数字键,因此您将无法像那样循环它。而是使用这样的东西:
foreach($size as $element) { echo $element; }
这也适用于数字键,并且总体上是更干净的方法。
-
假设您正在从
$_POST
超全局中检索数据,则提供的输入可能不是数组。要对其进行更多调试,请将调试器与 IDE 一起使用,也可以使用旧的var_dump()
。
希望有帮助。
编辑:我意识到在我写这篇文章的这段时间里,许多其他人也回答了这个问题。