Heim >Backend-Entwicklung >PHP-Tutorial > php数组过滤有关问题

php数组过滤有关问题

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

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

记忆中这是版主唠叨的代码,不敢僭越 
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn