php中搜索多维数组的键值程序
例如搜索[ok]就会匹配ok里面的数组 [你好,good,很好\"打印出来如果搜索[好]没有匹配到第一数组,就会模糊搜索所有含有[好]的的关键词,例如[你好 很好 爱好].
如下面例子,代码如下:
$foo [1][ 'a' ][ 'xx' ] = 'bar 1' ; $foo [1][ 'b' ][ 'xx' ] = 'bar 2' ; $foo [2][ 'a' ][ 'bb' ] = 'bar 3' ; $foo [2][ 'a' ][ 'yy' ] = 'bar 4' ; $foo [3][ 'c' ][ 'dd' ] = 'bar 3' ; $foo [3][ 'f' ][ 'gg' ] = 'bar 3' ; $foo [ 'info' ][1] = 'bar 5' ;如果要查找 bar 3 怎么进行查找呢,有三个结果,而这三个结果都要,看下面的函数,代码如下:
function array_search_re( $needle , $haystack , $a =0, $nodes_temp = array ()){ global $nodes_found ; $a ++; foreach ( $haystack as $key1 => $value1 ) { $nodes_temp [ $a ] = $key1 ; if ( is_array ( $value1 )){ array_search_re( $needle , $value1 , $a , $nodes_temp ); } else if ( $value1 === $needle ){ $nodes_found [] = $nodes_temp ; } } return $nodes_found ; }这个函数就可以把上面要查找到的内容全部返回出键名来,代码如下:
$result = array_search_re( 'bar 3' , $foo ); print_r( $result ); /* 输出结果为如下: Array ( [0] => Array ( [1] => 2 [2] => a [3] => bb ) [1] => Array ( [1] => 3 [2] => c [3] => dd ) [2] => Array ( [1] => 3 [2] => f [3] => gg ) ) */1,php搜索多维数组的键名,代码如下:
function array_search_key( $needle , $haystack ){ global $nodes_found ; foreach ( $haystack as $key1 => $value1 ) { if ( $key1 === $needle ){ $nodes_found [] = $value1 ; } if ( is_array ( $value1 )){ array_search_key( $needle , $value1 ); } } return $nodes_found ; } $result = array_search_key( 'a' , $foo ); print_r( $result ); /* 输出结果为如下: Array ( [0] => Array ( [xx] => bar 1 ) [1] => Array ( [bb] => bar 3 ) [2] => Array ( [yy] => bar 4 ) ) */类似全文匹配,用二个循环,第一个循环keys,第二个模糊匹配,用函数strstr() 来解决.
查看更多关于php中搜索多维数组的键值程序 - php数组的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did31271