Php for循环显示错误,称为offest Undefined $size=$\u POST['size']//邮递 $a=计数($size); 对于($x=0;$x
假设这样的数组:Php for循环显示错误,称为offest Undefined $size=$\u POST['size']//邮递 $a=计数($size); 对于($x=0;$x,php,Php,假设这样的数组: $size=$_POST['size']; //Post $a=count($size); for($x=0;$x<$a;$x++) { $f=$size[$x]; echo $f; } $size=$_POST['size']; //Post $size1=$_POST['size1']; //Post foreach(array_combine($size,$size1) as $key=>$value) { print $key."
$size=$_POST['size']; //Post
$a=count($size);
for($x=0;$x<$a;$x++)
{
$f=$size[$x];
echo $f;
}
$size=$_POST['size']; //Post
$size1=$_POST['size1']; //Post
foreach(array_combine($size,$size1) as $key=>$value) {
print $key."<br/>".$value."<br/>";
}
在本例中,count($size);
将为2,但索引0
和1
不存在(它是一个关联数组)。这就是为什么最好使用foreach
:
$size = [
'foo' => 'bar',
'zar' => 'car'
];
输出:
foreach ($size as $key => $value)
{
echo '$size[' . $key . '] = ' . $value, PHP_EOL;
}
当然,这一切都假设$size
实际上是一个数组。您确实应该首先检查:
$size[foo] = bar
$size[zar] = car
我建议:
$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=$\u POST['size'];//POST
$size1=$_POST['size1'];//POST
foreach(数组组合($size,$size1)为$key=>$value){
打印$key.“
.”$value.“
”;
}
当您访问像$size[$x]
这样的数组时,您正在使用偏移量$x
访问数组$size
通知未定义偏移量:1
表示数组$size
不是数组或没有元素1
在您的情况下,我认为$size
是:
- 一个关联数组。这意味着它没有数字键,因此您将无法像那样循环它。请改为使用以下内容:
$size=$_POST['size']; //Post $a=count($size); for($x=0;$x<$a;$x++) { $f=$size[$x]; echo $f; }
这也适用于数字键,总体而言是更干净的方法$size=$_POST['size']; //Post $size1=$_POST['size1']; //Post foreach(array_combine($size,$size1) as $key=>$value) { print $key."<br/>".$value."<br/>"; }
- 假设您正在从
超全局检索数据,则提供的输入可能不是数组。若要对其进行更多调试,请在IDE中使用调试器或使用旧的$\u POST
var\u dump()
编辑:在我写这篇文章的时候,我意识到很多其他人也已经回答了。你想循环什么?你确定$size是一个数组吗?它的输出是什么:
var\u dump($\u POST[“size”]);
?可能在$size
中你没有键1,你能在你的例子中提供var\u dump($size)
吗?$size=$\u POST['size'];$size1=$\u POST['size1'];@codefrenzy:脱离主题,但在这两种情况下(1和2),我都会考虑编写一个函数(递归或其他方式)…DRY和allthat@kparsiya:在这种情况下,postsize
作为数组数组:$size=$\u post['size']
其中$size[0]
是$\u post['size']
现在是,$size[1]
是$\u POST['size1']
现在是什么,等等,然后你得到一个大小数组arrays@Elias我已经删除了我的评论并更新了我的答案。谢谢你的提示。:@kparsiya,你没有检查你的变量是否是这样设置的:$size[$size[0]]=isset($size[0])?$size[0]:null;
。在foreach
中,该问题不会发生$size
的另一个可能问题是它是一个稀疏数组(请考虑:$foo=range(1,10);unset($foo[1]);
)没错。我一直在做更多的Java,我开始意识到Java数组只是数组,而不是疯狂的多方面额外维度uber内存浪费映射。PHP数组,用Java术语来说,是一个字典。没有更多,也没有更少。它的实现在资源方面没有那么浪费。没关系,还有upcoming主要发行版(PHPNG/PHP7)对array API进行了重大修订,进一步减少了内存占用,并提高了速度我希望我对PHP没有太多的批评,因为我每天都在使用它,并且热爱它所做的一切。我只是想指出,PHP数组远不止是其他编程语言中的“纯”数组。好吧,我也喜欢PHP。这并不意味着我不能批评它(我经常这样做:-P)。但说PHP数组是一种错误“多方面的额外维度uber内存浪费映射”有点太多。我坚持“PHP数组不是数组,它是字典”。它们的实现与其他语言中的字典没有太大区别