Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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 for循环显示错误,称为offest Undefined $size=$\u POST['size']//邮递 $a=计数($size); 对于($x=0;$x_Php - Fatal编程技术网

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/>";
    }
    
    这也适用于数字键,总体而言是更干净的方法

  • 假设您正在从
    $\u POST
    超全局检索数据,则提供的输入可能不是数组。若要对其进行更多调试,请在IDE中使用调试器或使用旧的
    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:在这种情况下,post
size
作为数组数组:
$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数组不是数组,它是字典”。它们的实现与其他语言中的字典没有太大区别