PHPの配列内検索関数[search_array]を使っていたら
前回同様、機能が足りないことに気づいたので
今回もまた同じように自作してみました。
因みに今回欲しかった機能は配列内検索の再帰処理です。
ソースコード
<?php /* * * argment : $needle => search needle. * : $array => target array. * * return : true or false */ function arrays_search( $needle , $ary ) { $retflag = false; if( is_array( $ary ) ) { $keys = array_keys( $ary ); for( $i = 0 ; $i < count( $keys ) ; ++$i ) { if( is_array( $ary[ $keys[ $i ] ] ) ) { if( arrays_search( $needle , $ary[ $keys[ $i ] ] ) ) { $retflag = true; break; } } else { if( $needle === $ary[ $keys[ $i ] ] ) { $retflag = true; break; } } } } return $retflag; } ?>
解説
引数の一番目に検索したいの文字列、
引数の二番目に検索対象の配列を
それぞれ指定します。
このへんの順番は元関数[search_array]に
合わせてみました
検索に引っかからなかった場合はtrue、
配列要素内に見つからなかったらfalseを
それぞれ返します。
デフォルトで用意されている
配列系の関数はほとんどが再帰処理を
行えないみたいですが、
こんな関数もあるみたいです。
関数[array_walk_recursive]