Re: array_search and multi-dimensional arrays

From: Date: Tue, 14 Mar 2006 13:19:55 +0000
Subject: Re: array_search and multi-dimensional arrays
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-231895@lists.php.net to get a copy of this message
List Manager wrote:
jonathan wrote:
I'd like to return the first key value in the following array such that England would return 1 rather than 3 which is the second key value. Any help would be greatly appreciated. $c[1][]="Vietnam"; $c[1][]="China"; $c[1][]="Thailand"; $c[1][]="England"; $c[2][]="USA"; $c[2][]="Japan"; print_r($c); // Array ( [1] => Array ( [0] => Vietnam [1] => China [2] => Thailand [3] => England ) [2] => Array ( [0] => USA [1] => Japan ) ) foreach($c as $row) {
    echo array_search("England",$row);
} // prints 3 -jonathan --PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
give this a shot <?php function findIndexof($ar, $str) { foreach($ar AS $k => $v) { if ( is_array($v) ) {
     $val = findIndexof($v, $str);
     if( $val !== false ) {
       return $val;
     }
} elseif ( strtolower($v) == strtolower($str) ) {
     return $k;
} } return FALSE; } $c[1][] = "Vietnam"; $c[1][] = "China"; $c[1][] = "Thailand"; $c[1][] = "England"; $c[2][] = "USA"; $c[2][] = "Japan"; echo findIndexof($c, 'Vietnam'); ?> You should be able to search arrays of any depth Hope this woks for you. Jim
Or, a lot easier: foreach($c as $key=>$row) { if(false !== array_search("England",$row)) {
    echo $key;
} }

« previous php.general (#231895) next »