Help us understand the problem. What is going on with this article?

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

本記事の趣旨

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はワンセット」というのを強く意識しないと混乱します。
もっと良いやり方があるような気もしますが、現状思いつきません。

多次元配列の場合

追って記載

ohara5555
サーバーサイドエンジニアです。PHP+Laravelでポートフォリオ作成中。 興味のある技術:AWS,Heroku,Docker,Golang Twitterやっています。 https://twitter.com/ohara5555
https://vamola.info/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away