[PHP]配列の要素を検索(再帰処理対応)

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]


This entry was posted in: PHP. Bookmark the ➜ permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)