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;
}