1.
我想把数组中值相同的无素过滤掉. 例: $arr = array( "0" => array("name" => "小明" , "parentid" => "6"), "1" => array("name" => "张三" , "parentid" => "2"), "2" => array("name" => "老李" , "parentid" => "25"), "3" => array("name" => "小明" , "parentid" => "6") ); 过滤后的数组为: $arr = array( "0" => array("name" => "小明" , "parentid" => "6"), "1" => array("name" => "张三" , "parentid" => "2"), "2" => array("name" => "老李" , "parentid" => "25") );
解答: 法一:建立一个新数组,然后遍历旧数组,把旧数组中的当前值和新数组中的当前值对比,如果新数组里面不存在这个值,就把这个值放到新数组里,如果存在就算了,然后继续下一个。
法二:
function distinct($ar) {//除去数组中相同值,二维数组可行 //dump($ar); $t = array_map(create_function('$v1', 'return join("", $v1);'), $ar); //将二维数组的第二维的值合并一个字符串 ,这样就成了一维数组了 // dump($t); $t = array_unique($t); //array_unique好像只是用于一维数组 //dump($t); $t = array_keys($t); // dump($t); foreach(array_keys($ar) as $i) { if(!in_array($i, $t)) { unset($ar[$i]); } } foreach($ar as $k => $v) {//对键值重新排序 $arr[] = $v; } return $arr; }
例: $arr = array( "0" => array("name" => "小明" , "parentid" => "6"), "1" => array("name" => "张三" , "parentid" => "2"), "2" => array("name" => "老李" , "parentid" => "25"), "3" => array("name" => "小明" , "parentid" => "6") ); print_r(distinct($arr)); 输出: Array ( [0] => Array ( [name] => 小明 [parentid] => 6 ) [1] => Array ( [name] => 张三 [parentid] => 2 ) [2] => Array ( [name] => 老李 [parentid] => 25 ) )
|