LoginSignup
0
0

More than 3 years have passed since last update.

【PHP】配列Aの並び順を正として、配列Bを並び替える

Posted at

本記事の趣旨

PHPの配列について、備忘のためメモします。
誰かの何かの役に立てれば幸いです。

要件

配列A(以下”見本”)の要素の並び順を正として、配列B(以下”要並び替え”)の要素を並び替える。

ただし、
要並び替え配列の中身そのものを並び替えるのではなく、
要並び替え配列の各要素が見本配列に存在するか、をチェックしたうえで、
存在していたら、その要素は見本配列内では何番目にあるのか、という情報を取得し、
その情報をもとに、別な配列に要素を入れ直す。

単純な配列の場合

$mihon = ["りんご", "みかん", ”バナナ”]; // 見本

$temoto = ["バナナ”, "りんご", "みかん"]; // 要並び替え

$checked_array = []; // 並び替え後に格納する用の配列

foreach($mihon as $key => $fruit){
   // 見本配列をループしつつ、要並び替え配列の$key番目の要素が、見本配列内に存在するかチェック
   if(in_array($temoto[$key], $mihon)){
       $index = array_search($fruit, $mihon); // 見本配列の要素の添字情報を変数に代入
       $checked_array[$index] = $fruit; // 並び替え(というか別な配列に詰め直し)
   }
}

var_dump($checked_array); // 見本配列と同じ順番になっている
// array(3) {
  [0]=>
  string(9) "りんご"
  [1]=>
  string(9) "みかん"
  [2]=>
  string(9) "バナナ"
}


「foreachでは$key => $valueはワンセット」というのを強く意識しないと混乱します。
もっと良いやり方があるような気もしますが、現状思いつきません。

多次元配列の場合

追って記載

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0