実現したいこと
$before_array のデータの並び順を見て、
$current_array のデータの並び順がそれと異なっていたら、
$before_array を正として並び替えを行いたいです。
以下、データの構成イメージです。
PHP
1$before_array = 2[ 3 ["company_id" => "0000004", "company_name" => "A社"], 4 ["company_id" => "0000002", "company_name" => "B社"], 5 ["company_id" => "0000003", "company_name" => "C社"], 6 ["company_id" => "0000005", "company_name" => "D社"], 7 ["company_id" => "0000001", "company_name" => "E社"] 8]; 9 10$current_array= 11[ 12 ["company_id" => "0000001", "company_name" => "E社"], 13 ["company_id" => "0000002", "company_name" => "B社"], 14 ["company_id" => "0000003", "company_name" => "C社"], 15 ["company_id" => "0000007", "company_name" => "X社"], 16 ["company_id" => "0000005", "company_name" => "D社"] 17]; 18 19$current_array= // 並び替え実行後 20[ 21 ["company_id" => "0000002", "company_name" => "B社"], 22 ["company_id" => "0000003", "company_name" => "C社"], 23 ["company_id" => "0000005", "company_name" => "D社"], 24 ["company_id" => "0000001", "company_name" => "E社"], 25 ["company_id" => "0000007", "company_name" => "X社"], 26];
試したこと
2つの配列それぞれに対してforeachを、と考えて、
$before_arrayを最初にforeachし、その中で$current_arrayをforeachして、とやろうとしたのですが、
いずれの配列も多次元配列であることで、多次元配列同士の添え字がnのcompany_idを比較・・・という辺りからこんがらがってしまっています。
foreachは$key => $valueの形式で展開しないと添え字が取得できない気もするのですが、そもそも方向性があっているのか分からず迷子状態です。
PHP
1foreach($before_array as $before){ 2 foreach($current_array as $current){ 3 // $current_arrayの0番目のIDと、$before_arrayの0番目のIDを突き合わせる 4 // 一致していたら、$current_arrayの0番目はそのまま 5 // 一致していなかったら、$before_arrayの0番目のIDと、$current_arrayの1番目のIDを付き合わせる 6 // 以下、一致するまで繰り返し 7 8 // 一致したら、$current_arrayの0番目に並び替える 9 10 11 12}
知見がお有りのかた、どうぞよろしくお願いいたします。