$a = Array ( [0]
=> Array ( [0] => 'apple'
[1] => 'orange'
[2] => 'grape' )
Array ( [1]
=> Array ( [0] => 'red'
[1] => 'yellow'
[2] => 'purple' )
}
という多次元配列(連想配列ではありません)において、
apple => red
orange => yellow
grape => purple
というように検索を行いたいのですが、以下のような処理ではなく、
なにかPHPの標準関数や技法を使って簡単に検索できないかと苦慮しています。
$i = 0;
foreach ($a[0] as $fruits) {
switch ($fruites) {
case 'apple' :
case 'orange' :
case 'grape' :
$color = $a[1][$i];
break;
}
$i++;
}
良い方法がございましたら、ご教授をお願いいたします。
対象を探すだけなら下記のような具合になります。
$a = Array(Array('apple', 'orange', 'grape'),Array('red', 'yellow', 'purple')); //$b = 'grape'; $b = 'Strawberry'; if ($i = array_search($b, $a[0])) { echo $a[1][$i]; } else { echo '該当無し'; }
3項演算にすれば、一行に出来なくもないけれど、
検索が二度になるので効率いいとは言えないですね。
(私が知らないだけで、検索は1回に出来るのかもしれませんが・・・。)
echo array_search($b, $a[0]) ? $a[1][array_search($b, $a[0])] : '該当なし';
用途と環境にもよりますが連想配列にしてしまったほうが楽かもしれません。
(下記はphp5以降です。php4環境では連想配列化は少し手間です。)
その他、配列を扱う関数の一覧と詳細が下記にありますので、
お時間できたときにでも、一通り眺めてみてください。
※本日はそろそろ布団に入りますので、以後の回答は翌日以降になります。
という多次元配列(連想配列ではありません)において、
PHP において配列と連想配列に区別はないのだがね。
apple => red
orange => yellow
grape => purple
というように検索を行いたいのですが
「検索」という言葉の意味がそれではよくわからんのだが以下のコードで
用は足りると思うがどうか?
$a = Array ( [0] => Array ( [0] => 'apple' [1] => 'orange' [2] => 'grape' ) Array ( [1] => Array ( [0] => 'red' [1] => 'yellow' [2] => 'purple' ) }; $result = array_combine($a[0],$a[1]); var_dump($result);