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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>\';

?>
参考技术A 你替换的是$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);
参考技术B 首先说明一点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);
参考技术C foreach出来的$cc是一个副本,改变这个$arr不会有任何影响。使用引用就行了。
foreach($arr as &$cc)

php 二维数组过滤相同的值

Array
(
[0] => Array
(
[names] => abc
[staus] => 1
)

[1] => Array
(
[names] => ddd
[staus] => 1
)

[2] => Array
(
[names] => ddd
[staus] => 1
)
)
如何过滤相同的值
变成这样

Array
(
[0] => Array
(
[names] => abc
[staus] => 1
)

[1] => Array
(
[names] => ddd
[staus] => 1
)
)

参考技术A $tmp=array();
$s=array();//你的数组
foreach($s as $k=>$v)
if(in_array($v['name'],$tmp))
unset($s[$k]);

$tmp[]=$v['name'];

var_dump($s);

参考技术B function multi_unique($array) 
   foreach ($array as $k=>$na)
       $new[$k] = serialize($na);
   $uniq = array_unique($new);
   foreach($uniq as $k=>$ser)
       $new1[$k] = unserialize($ser);
   return ($new1);

本回答被提问者采纳
参考技术C 恩恩额 不错的啊

以上是关于PHP 想从1组二维数组里取1个下标的值去其他数组查询另1个下标的值,然后用查询出来值替换原来二维数组里的的主要内容,如果未能解决你的问题,请参考以下文章

php 二维数组过滤相同的值

php 二维数组查找数组下标

二维数组中按子数组首个元素值去重

PHP获取数组下标的问题

php 下标用变量赋值问题 $id=1(随机得到); $arr是二维数组,$arr[id][name] 我需要得到这个值。

DelPhi中怎样定义数组及字母组