$size=$_POST['size']; //Post
$a=count($size);
for($x=0;$x<$a;$x++)
{
$f=$size[$x];
echo $f;
}
上面的代码返回错误,名为Notice:Undefined offset:1
答案 0 :(得分:1)
假设一个这样的数组:
$size = [
'foo' => 'bar',
'zar' => 'car'
];
在这种情况下,count($size);
将为2,但索引0
和1
不存在(它是一个关联数组)。这就是为什么你更善于使用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
答案 1 :(得分:1)
我建议做:
$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/>";
}
答案 2 :(得分:0)
当您访问$size[$x]
之类的数组时,您正在使用偏移$size
访问数组$x
。
通知Undefined offset: 1
表示数组$size
要么不是数组,要么没有元素1
。
在您的情况下,我认为$size
是:
关联数组。这意味着它没有数字键,因此您无法像这样循环它。而是使用这样的东西:
foreach($size as $element) {
echo $element;
}
这也适用于数字键,总体而言是更清洁的方法。
鉴于您要从$_POST
超全局检索数据,所提供的输入很可能不是数组。要对其进行更多调试,请在IDE中使用调试器或使用旧的var_dump()
。
希望有所帮助。
编辑:我意识到在我写这篇文章的时候,其他许多人也回答过。