*多次元配列のソート [#qc1b437e]


**多次元配列を指定したキーでソートすることができる関数 [#x7f20b6c]

***キーを3つ指定できる [#x27a9d67]
#geshi(PHP){{
function array_sort_multi3($array, $key, $key2, $key3)
{
	for ($i = 0; $i < sizeof($array); $i++) {
		if(! empty($array[$i][$key][$key2][$key3])){
			$sort_values[$i] = $array[$i][$key][$key2][$key3];
		}else{
			$sort_values[$i] = $array[$i];
		}
	}
	asort ($sort_values);
	reset ($sort_values);
	while (list ($arr_keys, $arr_values) = each ($sort_values)) {
		$sorted_arr[] = $array[$arr_keys];
	}
	return $sorted_arr;
}
}}

***キーを2つ指定できる [#sc8fb9f5]
#geshi(PHP){{
function array_sort_multi2($array, $key,$key2)
{
	for ($i = 0; $i < sizeof($array); $i++) {
		if(! empty($array[$i][$key][$key2])){
			$sort_values[$i] = $array[$i][$key][$key2];
		}else{
			$sort_values[$i] = $array[$i];
		}
	}
	asort ($sort_values);
	reset ($sort_values);
	while (list ($arr_keys, $arr_values) = each ($sort_values)) {
		$sorted_arr[] = $array[$arr_keys];
	}
	return $sorted_arr;
} 
}}

***キーを1つ指定できる [#nc187f57]
#geshi(PHP){{
function array_sort($array, $key)
{
	for ($i = 0; $i < sizeof($array); $i++) {
		$sort_values[$i] = $array[$i][$key];
	}
	asort ($sort_values);
	reset ($sort_values);
	while (list ($arr_key, $arr_val) = each ($sort_values)) {
		$sorted_arr[] = $array[$arr_key];
	}
	return $sorted_arr;
}
}}



**参考 [#w8812d9c]
[[PHP: asort - Manual:http://jp.php.net/manual/ja/function.asort.php]]


*多次元配列のソート(例題) [#u233408d]
**ソートしたい配列 [#a4740dc2]
#geshi(PHP){{
$sample[0]['id'] = 4;
$sample[0]['id2'] = 3;
$sample[0]['id3'] = 4;
$sample[0]['name'] = 'dd';

$sample[1]['id'] = 4;
$sample[1]['id2'] = 3;
$sample[1]['id3'] = 3;
$sample[1]['name'] = 'cc';

$sample[2]['id'] = 4;
$sample[2]['id2'] = 3;
$sample[2]['id3'] = 5;
$sample[2]['name'] = 'aa';

$sample[3]['id'] = 3;
$sample[3]['id2'] = 1;
$sample[3]['id3'] = 2;
$sample[3]['name'] = 'bb';

$sample[4]['id'] = 4;
$sample[4]['id2'] = 4;
$sample[4]['id3'] = 5;
$sample[4]['name'] = 'ee';
}}

**実行する [#k7d8538e]
#geshi(PHP){{
$result = array_sort_multi3($sample, 'id', 'id2', 'id3');
}}

**結果 [#t3a71418]
#geshi(PHP){{
Array
(
    [0] => Array
        (
            [id] => 3
            [id2] => 1
            [id3] => 2
            [name] => bb
        )

    [1] => Array
        (
            [id] => 4
            [id2] => 3
            [id3] => 3
            [name] => cc
        )

    [2] => Array
        (
            [id] => 4
            [id2] => 3
            [id3] => 4
            [name] => dd
        )

    [3] => Array
        (
            [id] => 4
            [id2] => 3
            [id3] => 5
            [name] => aa
        )

    [4] => Array
        (
            [id] => 4
            [id2] => 4
            [id3] => 5
            [name] => ee
        )

)
}}

#counter


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS