以下の配列AからSkill要素だけ抜き出す(たとえば配列Bのようにする)PHPの関数もしくは方法をを教えてください。ロジックは書かないで、phpの標準的な関数を使ってできればベストです。ロジックを書けばなんとでもできるので・・。
配列A = array(
'Name' => 'hoge1',
'Type' => array(
'Skill' = array (
'php' => 1,
'perl' => 1,
)
),
'Name' => 'hoge2',
'Type' => array(
'Skill' = array (
'mysql' => 1,
'oracle' => 1,
)
)
);
配列A = array(
'Skill' = array (
'php' => 1,
'perl' => 1,
'mysql' => 1,
'oracle' => 1,
)
);
"Name" => "hoge1" のあとで
"Name" => "hoge2" と書いてあるので
"Name"の中身は最後に示された"hoge2"が残る形となってしまい配列Aの定義自体が間違っている。
そこで、ソースに書かれているキーワードから何をしたいのか想像して
「テキストファイルやデータベースなどから各人のスキルを抜き出してきて
1つの配列に収めようとしている」のではないかと考えました。
空のarray作成; ループ開始 一人分を読み出す処理。 arrayにmarge; ループ終了
上の仮説が正しいのだとすれば関数としてarray_merge_recursiveを使えば解決しそうに思います。
array_merge_recursiveのサンプル
$a1 = array( "Name" => "hoge1", "Type" => array( "Skill" => array ( "php" => 1, "perl" => 1 ) ), ); $a2 = array( "Name" => "hoge2", "Type" => array( "Skill" => array ( "mysql" => 1, "oracle" => 1 ) ) ); $b = array_merge_recursive($a1,$a2); // 配列全体 print_r($b); $c = $b['Type']; //スキルだけ抜き出し print_r($c);
$bの出力結果
Array ( [Name] => Array ( [0] => hoge1 [1] => hoge2 ) [Type] => Array ( [Skill] => Array ( [php] => 1 [perl] => 1 [mysql] => 1 [oracle] => 1 ) ) )
$cの出力結果
Array ( [Skill] => Array ( [php] => 1 [perl] => 1 [mysql] => 1 [oracle] => 1 ) )
array_merge_recursiveっていうのがドンビシャです!