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

phpの配列の並び替えの質問です。


●質問者: FujiiRock
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

▼並び替え前の配列
array(4) {
["fillColor"]=>
array(27) {
[0]=>
string(7) "#052E79"
[1]=>
string(7) "#84AEFA"
[2]=>
string(7) "#E6EEFE"
[3]=>
string(7) "#E6EEFE"
[4]=>
string(7) "#E6EEFE"
[5]=>
string(7) "#E6EEFE"
[6]=>
string(7) "#E6EEFE"
[7]=>
string(7) "#E6EEFE"
[8]=>
string(7) "#E6EEFE"
[9]=>
string(7) "#E6EEFE"
[10]=>
string(7) "#E6EEFE"
[11]=>
string(7) "#E6EEFE"
[12]=>
string(7) "#E6EEFE"
[13]=>
string(7) "#E6EEFE"
[14]=>
string(7) "#E6EEFE"
[15]=>
string(7) "#E6EEFE"
[16]=>
string(7) "#E6EEFE"
[17]=>
string(7) "#E6EEFE"
[18]=>
string(7) "#E6EEFE"
[19]=>
string(7) "#E6EEFE"
[20]=>
string(7) "#E6EEFE"
[21]=>
string(7) "#E6EEFE"
[22]=>
string(7) "#E6EEFE"
[23]=>
string(7) "#E6EEFE"
[24]=>
string(7) "#E6EEFE"
[25]=>
string(7) "#E6EEFE"
[26]=>
string(7) "#E6EEFE"
}
["strokeColor"]=>
array(27) {
[0]=>
string(7) "#010917"
[1]=>
string(7) "#010917"
[2]=>
string(7) "#010917"
[3]=>
string(7) "#010917"
[4]=>
string(7) "#010917"
[5]=>
string(7) "#010917"
[6]=>
string(7) "#010917"
[7]=>
string(7) "#010917"
[8]=>
string(7) "#010917"
[9]=>
string(7) "#010917"
[10]=>
string(7) "#010917"
[11]=>
string(7) "#010917"
[12]=>
string(7) "#010917"
[13]=>
string(7) "#010917"
[14]=>
string(7) "#010917"
[15]=>
string(7) "#010917"
[16]=>
string(7) "#010917"
[17]=>
string(7) "#010917"
[18]=>
string(7) "#010917"
[19]=>
string(7) "#010917"
[20]=>
string(7) "#010917"
[21]=>
string(7) "#010917"
[22]=>
string(7) "#010917"
[23]=>
string(7) "#010917"
[24]=>
string(7) "#010917"
[25]=>
string(7) "#010917"
[26]=>
string(7) "#010917"
}
["data"]=>
array(27) {
[0]=>
string(2) "44"
[1]=>
string(2) "35"
[2]=>
string(2) "14"
[3]=>
string(1) "3"
[4]=>
string(1) "0"
[5]=>
string(1) "0"
[6]=>
string(1) "0"
[7]=>
string(1) "0"
[8]=>
string(1) "0"
[9]=>
string(1) "0"
[10]=>
string(1) "0"
[11]=>
string(1) "0"
[12]=>
string(1) "0"
[13]=>
string(1) "0"
[14]=>
string(1) "0"
[15]=>
string(1) "0"
[16]=>
string(1) "100"
[17]=>
string(1) "0"
[18]=>
string(1) "0"
[19]=>
string(1) "0"
[20]=>
string(1) "0"
[21]=>
string(1) "0"
[22]=>
string(1) "0"
[23]=>
string(1) "0"
[24]=>
string(1) "0"
[25]=>
string(1) "0"
[26]=>
string(1) "0"
}
["sort"]=>
array(27) {
[0]=>
string(4) "COL0"
[1]=>
string(4) "COL1"
[2]=>
string(4) "COL2"
[3]=>
string(4) "COL3"
[4]=>
string(5) "COL19"
[5]=>
string(5) "COL20"
[6]=>
string(5) "COL17"
[7]=>
string(5) "COL21"
[8]=>
string(5) "COL18"
[9]=>
string(5) "COL23"
[10]=>
string(9) "COL25OVER"
[11]=>
string(5) "COL25"
[12]=>
string(5) "COL24"
[13]=>
string(5) "COL16"
[14]=>
string(5) "COL22"
[15]=>
string(5) "COL13"
[16]=>
string(4) "COL7"
[17]=>
string(4) "COL6"
[18]=>
string(4) "COL5"
[19]=>
string(4) "COL4"
[20]=>
string(4) "COL8"
[21]=>
string(4) "COL9"
[22]=>
string(5) "COL14"
[23]=>
string(5) "COL12"
[24]=>
string(5) "COL11"
[25]=>
string(5) "COL10"
[26]=>
string(5) "COL15"
}
}

▼並び替え後
array(4) {
["fillColor"]=>
array(27) {
[0]=>
string(7) "#052E79"
[1]=>
string(7) "#84AEFA"
[2]=>
string(7) "#E6EEFE"
[3]=>
string(7) "#E6EEFE"
[4]=>
string(7) "#E6EEFE"
[5]=>
string(7) "#E6EEFE"
[6]=>
string(7) "#E6EEFE"
[7]=>
string(7) "#E6EEFE"
[8]=>
string(7) "#E6EEFE"
[9]=>
string(7) "#E6EEFE"
[10]=>
string(7) "#E6EEFE"
[11]=>
string(7) "#E6EEFE"
[12]=>
string(7) "#E6EEFE"
[13]=>
string(7) "#E6EEFE"
[14]=>
string(7) "#E6EEFE"
[15]=>
string(7) "#E6EEFE"
[16]=>
string(7) "#E6EEFE"
[17]=>
string(7) "#E6EEFE"
[18]=>
string(7) "#E6EEFE"
[19]=>
string(7) "#E6EEFE"
[20]=>
string(7) "#E6EEFE"
[21]=>
string(7) "#E6EEFE"
[22]=>
string(7) "#E6EEFE"
[23]=>
string(7) "#E6EEFE"
[24]=>
string(7) "#E6EEFE"
[25]=>
string(7) "#E6EEFE"
[26]=>
string(7) "#E6EEFE"
}
["strokeColor"]=>
array(27) {
[0]=>
string(7) "#010917"
[1]=>
string(7) "#010917"
[2]=>
string(7) "#010917"
[3]=>
string(7) "#010917"
[4]=>
string(7) "#010917"
[5]=>
string(7) "#010917"
[6]=>
string(7) "#010917"
[7]=>
string(7) "#010917"
[8]=>
string(7) "#010917"
[9]=>
string(7) "#010917"
[10]=>
string(7) "#010917"
[11]=>
string(7) "#010917"
[12]=>
string(7) "#010917"
[13]=>
string(7) "#010917"
[14]=>
string(7) "#010917"
[15]=>
string(7) "#010917"
[16]=>
string(7) "#010917"
[17]=>
string(7) "#010917"
[18]=>
string(7) "#010917"
[19]=>
string(7) "#010917"
[20]=>
string(7) "#010917"
[21]=>
string(7) "#010917"
[22]=>
string(7) "#010917"
[23]=>
string(7) "#010917"
[24]=>
string(7) "#010917"
[25]=>
string(7) "#010917"
[26]=>
string(7) "#010917"
}
["data"]=>
array(27) {
[0]=>
string(2) "44"
[1]=>
string(2) "35"
[2]=>
string(2) "14"
[3]=>
string(1) "3"
[4]=>
string(1) "0"
[5]=>
string(1) "0"
[6]=>
string(1) "0"
[7]=>
string(1) "100"
[8]=>
string(1) "0"
[9]=>
string(1) "0"
[10]=>
string(1) "0"
[11]=>
string(1) "0"
[12]=>
string(1) "0"
[13]=>
string(1) "0"
[14]=>
string(1) "0"
[15]=>
string(1) "0"
[16]=>
string(1) "0"
[17]=>
string(1) "0"
[18]=>
string(1) "0"
[19]=>
string(1) "0"
[20]=>
string(1) "0"
[21]=>
string(1) "0"
[22]=>
string(1) "0"
[23]=>
string(1) "0"
[24]=>
string(1) "0"
[25]=>
string(1) "0"
[26]=>
string(1) "0"
}
["sort"]=>
array(27) {
[0]=>
string(4) "COL0"
[1]=>
string(4) "COL1"
[2]=>
string(4) "COL2"
[3]=>
string(4) "COL3"
[4]=>
string(5) "COL4"
[5]=>
string(5) "COL5"
[6]=>
string(5) "COL6"
[7]=>
string(5) "COL7"
[8]=>
string(5) "COL8"
[9]=>
string(5) "COL9"
[10]=>
string(9) "COL10"
[11]=>
string(5) "COL11"
[12]=>
string(5) "COL12"
[13]=>
string(5) "COL13"
[14]=>
string(5) "COL14"
[15]=>
string(5) "COL15"
[16]=>
string(4) "COL16"
[17]=>
string(4) "COL17"
[18]=>
string(4) "COL18"
[19]=>
string(4) "COL19"
[20]=>
string(4) "COL20"
[21]=>
string(4) "COL21"
[22]=>
string(5) "COL22"
[23]=>
string(5) "COL23"
[24]=>
string(5) "COL24"
[25]=>
string(5) "COL25"
[26]=>
string(5) "COL25OVER"
}
}

並び替え後には、["sort"]の値のCOLXXの昇順で
["data"]["strokeColor"]["fillColor"]を並び替わっている状態です。

サンプルのソースいただけると助かります。
よろしくお願いします。


1 ● a-kuma3
●100ポイント ベストアンサー

こんな感じでしょうか。

<?php

// $data に、並べ替え対象のデータが入ってるとして...
$data = ...

// 並べ替え用の配列を作る 
$idx = [];
foreach ($data["sort"] as $s) {
 if (preg_match("/OVER$/", $s)) {
 $v = 99999;
 } else {
 $ss = substr($s, 3);
 $v = intval($ss);
 }
 $idx[] = $v;
}

// 並べ替え用の配列で、$data の四つの配列を並べ替え
array_multisort($idx, $data["fillColor"], $data["strokeColor"], $data["data"], $data["sort"]);

?>

["sort"] は、一ケタの場合があったり、"OVER" がついてたりで扱いにくいので、一旦、並べ替え用の数値の配列を作ります。
後は、array_multisort() を使って、一気に並べ替えをするだけです。
PHP: array_multisort - Manual


FujiiRockさんのコメント
ありがとうございました!おかげさまで解決しました。
関連質問

●質問をもっと探す●



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