PHP 想从1组二维数组里取1个下标的值去其他数组查询另1个下标的值,然后用查询出来值替换原来二维数组里的

$arr = array(1=>array('id'=>1,'pass'=>'1'),'2'=>array('id'=>2,'pass'=>2));
$row = array(1=>'abc',2=>'def');
foreach($arr as $cc){
$id = $row[$cc['pass']];
$cc['pass'] = $id; //替换pass的值
}
做到这里我再打印$arr的值还是没变~应该怎么操作~求解

$arr的值还是没变 的原因是: 你以值传递的方式修改的并不是$arr数组,而是$arr数组的副本,如果想修改$arr数组本身,需要将值传递修改为地址传递。

foreach($arr as $cc){ 这是值传递,改为地址传递即可 foreach($arr as &$cc)

完整代码如下:
<?php

$arr = array(1 => array('id' => 1, 'pass' => '1'), '2' => array('id' => 2,'pass' => 2));
$row = array(1 => 'abc', 2 => 'def');
foreach ($arr as &$cc) //此处修改为地址传递
{
$id = $row[$cc['pass']];
$cc['pass'] = $id; //替换pass的值
}

echo '<pre>';
print_r($arr);
echo '</pre>';

?>
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-24
你替换的是$cc的值,并没有替换$arr的值,所以还是原来的值没变
你可以把他存放到另一个数组里面显示,或者在操作完后再把$arr覆盖掉
$arr = array(1=>array('id'=>1,'pass'=>'1'),'2'=>array('id'=>2,'pass'=>2));
$row = array(1=>'abc',2=>'def');
$arr_set=array();
foreach($arr as $cc){
$id = $row[$cc['pass']];
$cc['pass'] = $id;
$arr_set[]=$cc;
}
print_r($arr_set);
第2个回答  2012-05-24
首先说明一点foreach($arr as $cc)后$cc与$arr是两个不同的数组。$arr不会随$cc的值改变而改变。所以你打印出来的$arr的值不变。我帮你修改了。
$arr = array(1=>array('id'=>1,'pass'=>'1'),'2'=>array('id'=>2,'pass'=>2));
$row = array(1=>'abc',2=>'def');
foreach($arr as $key=> $cc){
$id = $row[$cc['pass']];
$arr[$key]['pass'] = $id; //替换pass的值
}
print_r($arr);
第3个回答  2012-05-24
foreach出来的$cc是一个副本,改变这个$arr不会有任何影响。使用引用就行了。
foreach($arr as &$cc){