Home >Backend Development >PHP Tutorial > php数组过滤有关问题

php数组过滤有关问题

WBOY
WBOYOriginal
2016-06-13 12:49:43830browse

php数组过滤问题
假设数组
array(0 => array('catid' => 10 , 'parent' => '1') , 1 => array('catid' => 11 , 'parent' => 1) , array('catid' => 21 , 'parent' => 2) );

我希望只保留 parent 为2的值要怎么做呢?
小弟新人希望大侠帮忙 谢谢!

php
------解决方案--------------------
$a = array(0 => array('catid' => 10 , 'parent' => '1') , 1 => array('catid' => 11 , 'parent' => 1) , array('catid' => 21 , 'parent' => 2) );<br />
$t = array_map(function($v) { return array('parent' => $v['parent']); }, $a);<br />
/*<br />
php 5.2.x 写作<br />
$t = array_map(create_function('$v', 'return array("parent" => $v["parent"]);'), $a);<br />
*/<br />
print_r($t);
Array
(
    [0] => Array
        (
            [parent] => 1
        )

    [1] => Array
        (
            [parent] => 1
        )

    [2] => Array
        (
            [parent] => 2
        )

)

------解决方案--------------------
function intersect2nd($arr1, $arr2, $key)
{
foreach($arr2 as $v) $tmpArr[] = $v[$key];
foreach($arr1 as $k=>$v) if(in_array($v[$key], $tmpArr)) $arr[$k] = $v;
return $arr;
}
$a=array(0 => array('catid' => 10 , 'parent' => '1') , 1 => array('catid' => 11 , 'parent' => 1) , array('catid' => 21 , 'parent' => 2) );
$b=array(array('parent' => 2)); //这个自己编一个类似数组,包含所需key和值就行
$c= intersect2nd($a, $b, 'parent');
var_export($c);

记忆中这是版主唠叨的代码,不敢僭越 
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn