ホームページ > バックエンド開発 > PHPチュートリアル > 指定されたキーのパスを見つける方法

指定されたキーのパスを見つける方法

WBOY
リリース: 2016-06-23 14:08:34
オリジナル
1126 人が閲覧しました

特定のパターンを持つ配列内のキーのパスを見つけたい場合、次のコードは赤富士のキーを見つけて、その親パス配列(2, 3, 5, 9) を含む配列を返す必要があります。
専門家の方、助けてください ありがとうございます。 一日中調べましたが、わかりませんでした。

	$array = array(		1=>array(			"name"=>"粮油"		),		2=>array(			"name"=>"果蔬",			"chlids"=>array(				3=>array(					"name"=>"水果",					"chlids"=>array(						5=>array(							"name"=>"苹果",							"childs"=>array(								8=>array(									"name"=>"青苹果",								),								9=>array(									"name"=>"红富士",								)							)						),						6=>array(							"name"=>"橘子"						),						7=>array(							"name"=>"大鸭梨"						)					)				),				4=>array(					"name"=>"蔬菜",					"chlids"=>array(						3=>array(							"name"=>"白菜"						),						3=>array(							"name"=>"芹菜"						)					)				),						)		)	);
ログイン後にコピー


ディスカッションへの返信 (解決策)

$r = find($array, '红富士');print_r($r);function find($ar, $name='') {  $res = array();  foreach($ar as $k=>$v) {    if($v['name'] == $name) $res[] = $k;    elseif(isset($v['childs']) && ! $res) {      $res = find($v['childs'], $name);      if($res) array_unshift($res, $k);    }  }  return $res;}
ログイン後にコピー
ログイン後にコピー
Array

(
[0] = > 2
[1] => 3
[2] = > 5
[3] => 9
)

また、注意してください: chlid として書かれています。

$r = find($array, '红富士');print_r($r);function find($ar, $name='') {  $res = array();  foreach($ar as $k=>$v) {    if($v['name'] == $name) $res[] = $k;    elseif(isset($v['childs']) && ! $res) {      $res = find($v['childs'], $name);      if($res) array_unshift($res, $k);    }  }  return $res;}
ログイン後にコピー
ログイン後にコピー
Array

(
[0] => 2
[1] = > 3
[2] => 5
[3] => 9
)

また、お子様のキーの一部にも注意してください。名前が間違って書かれていて、chlid と書かれていました



まだそこにいますか?私の質問は少し間違っています。赤富士のキーである 9 を見つけて、この結果を返すというものです。この結果は正しいです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート