Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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 数组上的foreach参数无效?_Php_Arrays_Foreach - Fatal编程技术网

Php 数组上的foreach参数无效?

Php 数组上的foreach参数无效?,php,arrays,foreach,Php,Arrays,Foreach,我完全迷路了,我有以下代码: $val = explode('?',$_POST['data']); print_r($val); foreach($val as &$v) { //some code } 结果是: Array ( [0] => 1|1|41|1|1|1 [1] => 1|1|31|1|1|1 [2] => 1|1|21|1|1|3 ) Warning: Invalid argument supplied

我完全迷路了,我有以下代码:

    $val = explode('?',$_POST['data']);
    print_r($val);
    foreach($val as &$v) {
       //some code
    }
结果是:

Array ( [0] => 1|1|41|1|1|1 [1] => 1|1|31|1|1|1 [2] => 1|1|21|1|1|3 ) 
Warning: Invalid argument supplied for foreach() in test.php on line 131
我真的不明白我做错了什么


PS实际上,我添加了
print\r
只是为了看看哪里出了问题,我真的不需要它您的代码正在更改foreach中的某个地方的
$val

此代码运行正常,请参阅:


@jhonraymos以确保对阵列进行更改directly@jhonraymos&是通过引用而不是副本来访问数组元素,因此,如果要修改原始数组内容,则需要更快的访问。是否确定这是第131行,并且没有其他foreach在某处抛出错误?请发布完整代码。。错误可能在另一个foreach中,请确保行错误与发布的代码相对应。@Nelson,使用&不一定更快。由于PHP中存在这种写时复制原则,&的唯一目的是能够更改元素(至少关于foreach)。这不是原因,因为
foreach
获取数组的副本。试试看:
$arr=array(1,2,3);foreach($arr as$v){echo“$v”$arr=null;}
我不知道为什么,但是将变量的名称更改为更长的名称就可以了!谢谢你!
$_POST['data'] = '1|1|41|1|1|1?1|1|31|1|1|1?1|1|21|1|1|3';

$val = explode( '?', $_POST['data'] );
print_r( $val );
foreach ( $val as &$v ) {
  echo $v;
}