如何在多维数组上使用array_search或in_array函数

时间:2014-03-07 06:04:23

标签: php arrays multidimensional-array

<?php
static $cnt=0;
$name='victor';
$coll = array(
    'dep1'=>array(
        'fy'=>array('john','johnny','victor'),
        'sy'=>array('david','arthur'),
        'ty'=>array('sam','joe','victor')
    ),
        'dep2'=>array(
        'fy'=>array('natalie','linda','molly'),
        'sy'=>array('katie','helen','sam','ravi','vipul'),
        'ty'=>array('sharon','julia','maddy')
    )
    );

    function array_find($name,$arr)
    {
        global $cnt;
    if(!(is_array($arr)))
        return false;

    foreach($arr as $val)
    {
        if(is_array($val))
        array_find($name,$val);
        else
        {
        $val=strtolower($val);
        $item=strtolower($name);
        if($val==$name)
            $cnt+=1;
        }
    }
    }

    array_find($name,$coll);

    if($cnt==0)
    echo "$name was Not Found";
    else
    echo "$name was found $cnt times.";

1 个答案:

答案 0 :(得分:1)

试试这段代码,希望它能运作

<?php
static $cnt = 0;
$name = 'victor';
$coll = array(
    'dep1' => array(
        'fy' => array('john', 'johnny', 'victor'),
        'sy' => array('david', 'arthur'),
        'ty' => array('sam', 'joe', 'victor')
    ),
    'dep2' => array(
        'fy' => array('natalie', 'linda', 'molly'),
        'sy' => array('katie', 'helen', 'sam', 'ravi', 'vipul'),
        'ty' => array('sharon', 'julia', 'maddy')
    )
);

function recursive_search(&$v, $k, $search_query){
    global $cnt;
    if($v == $search_query){
        ++$cnt;
    }
}
array_walk_recursive($coll, 'recursive_search' , $name);
if ($cnt == 0)
    echo "$name was Not Found";
else
    echo "$name was found $cnt times.";

DEMO