人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのちょっとした配列の質問です。

以下の配列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,
)
);

●質問者: cbic
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:MySQL name Oracle Perl PHP
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● kn1967
●60ポイント ベストアンサー

"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っていうのがドンビシャです!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ