PHP Array: Searching Nested Array
PHP Array Tips - Part 19: Do you want to search a series of nested arrays for a particular key or value? use like this:
<?php
function arrayRecursiveSearch($needle, $haystack, $path=""){
if(!is_array($haystack)){
die("second argument is not array");
}
global $matches;
foreach($haystack as $key=>$value)
{
if(preg_match("/$needle/i", $key)){
$matches[] = array($path . "$key/", "KEY: $key");
}
if(is_array($value)){
$path .= "$key/";
arrayRecursiveSearch($needle, $value, $path);
unset($path);
}else{
if(preg_match("/$needle/i", $value)){
$matches[] = array($path . "$key/", "VALUE: $value");
}
}
}
return $matches;
}
$arr = array("Asia"=>array('rambutan','duku'),
"Australia"=>array('pear','kiwi'),
"Arab"=>array('kurma'));
print_r(arrayRecursiveSearch("ra",$arr));
// result: Array ( [0] => Array ( [0] => Asia/0/ [1] => VALUE: rambutan ) [1] => Array ( [0] => Australia/ [1] => KEY: Australia ) [2] => Array ( [0] => Arab/ [1] => KEY: Arab ) )
?>
Back to TOC Array Tips
