:: reverse dictionary ::
※ソースファイルについて
連想配列をキーの降順でソートするには、krsort 関数を使います。
$systems = array(
"Linux" => "リナックス"
, "Windows" => "ウィンドウズ"
, "FreeBSD" => "フリービーエスディー"
, "Solaris" => "ソラリス"
);
krsort($systems);
echo "<pre>\n";
// ソートした順序で出力
foreach ($systems as $key => $value) {
echo "\$systems[\"".$key."\"] = \"".$value."\"\n";
}
echo "</pre>\n";
$systems["Windows"] = "ウィンドウズ" $systems["Solaris"] = "ソラリス" $systems["Linux"] = "リナックス" $systems["FreeBSD"] = "フリービーエスディー"
void krsort(array a) void krsort(array a, int f)
連想配列 a をキーの降順でソートします。
(キーが文字列の場合は、辞書式順序の降順でソートします)
フラグ f は、PHP4 から利用可能です。
次の3つのフラグのいずれかを指定できます。
SORT_REGULARSORT_NUMERICSORT_STRINGそれぞれのフラグは、ソートの動作に影響します。
SORT_REGULAR
このフラグは、既定のフラグです。
ソートは、フラグ f を指定しない場合と同じ結果になります。
キーが数値の場合は、そのまま数値としてソートします。
(数字文字列のキーは、連想配列に格納した時点で数値になります)
$data = array(
100 => "one hundred"
, "2" => "two"
, "200" => "two hundred"
, 1 => "one"
, 20 => "twenty"
, "10" => "ten"
);
krsort($data, SORT_REGULAR);
echo "<pre>\n";
// ソートした順序で出力
foreach ($data as $key => $value) {
echo "\$data[".$key."] = \"".$value."\"\n";
}
echo "</pre>\n";
$data[200] = "two hundred" $data[100] = "one hundred" $data[20] = "twenty" $data[10] = "ten" $data[2] = "two" $data[1] = "one"
数字以外の文字列と数値の両方が含まれる場合は、数値が前、文字列が後の順になります。
$data = array(
100 => "one hundred"
, "b" => "ビー"
, "a" => "エー"
, 1 => "one"
, "c" => "シー"
, 10 => "ten"
);
krsort($data, SORT_REGULAR);
echo "<pre>\n";
// ソートした順序で出力
foreach ($data as $key => $value) {
if (is_string($key)) {
$key = "\"".$key."\"";
}
echo "\$data[".$key."] = \"".$value."\"\n";
}
echo "</pre>\n";
$data[100] = "one hundred" $data[10] = "ten" $data[1] = "one" $data["c"] = "シー" $data["b"] = "ビー" $data["a"] = "エー"
SORT_NUMERICこのフラグを指定すると、キーを数値としてソートします。
$data = array(
100 => "one hundred"
, "2" => "two"
, "200" => "two hundred"
, 1 => "one"
, 20 => "twenty"
, "10" => "ten"
);
krsort($data, SORT_NUMERIC);
echo "<pre>\n";
// ソートした順序で出力
foreach ($data as $key => $value) {
echo "\$data[".$key."] = \"".$value."\"\n";
}
echo "</pre>\n";
$data[200] = "two hundred" $data[100] = "one hundred" $data[20] = "twenty" $data[10] = "ten" $data[2] = "two" $data[1] = "one"
数字以外の文字列と数値の両方が含まれる場合は、数値が前、文字列が後の順になります。
$data = array(
100 => "one hundred"
, "b" => "ビー"
, "a" => "エー"
, 1 => "one"
, "c" => "シー"
, 10 => "ten"
);
krsort($data, SORT_NUMERIC);
echo "<pre>\n";
// ソートした順序で出力
foreach ($data as $key => $value) {
if (is_string($key)) {
$key = "\"".$key."\"";
}
echo "\$data[".$key."] = \"".$value."\"\n";
}
echo "</pre>\n";
$data[100] = "one hundred" $data[10] = "ten" $data[1] = "one" $data["c"] = "シー" $data["a"] = "エー" $data["b"] = "ビー"
この場合、文字列は正常にソートされません。
キーの順序によって結果が異なります。
SORT_STRINGこのフラグを指定すると、キーを文字列としてソートします。
$data = array(
100 => "one hundred"
, "2" => "two"
, "200" => "two hundred"
, 1 => "one"
, 20 => "twenty"
, "10" => "ten"
);
krsort($data, SORT_STRING);
echo "<pre>\n";
// ソートした順序で出力
foreach ($data as $key => $value) {
echo "\$data[".$key."] = \"".$value."\"\n";
}
echo "</pre>\n";
$data[200] = "two hundred" $data[20] = "twenty" $data[2] = "two" $data[100] = "one hundred" $data[10] = "ten" $data[1] = "one"
数字以外の文字列と数値の両方が含まれる場合は、文字列が前、数値が後の順になります。
$data = array(
100 => "one hundred"
, "b" => "ビー"
, "a" => "エー"
, 1 => "one"
, "c" => "シー"
, 10 => "ten"
);
krsort($data, SORT_STRING);
echo "<pre>\n";
// ソートした順序で出力
foreach ($data as $key => $value) {
if (is_string($key)) {
$key = "\"".$key."\"";
}
echo "\$data[".$key."] = \"".$value."\"\n";
}
echo "</pre>\n";
$data["c"] = "シー" $data["b"] = "ビー" $data["a"] = "エー" $data[100] = "one hundred" $data[10] = "ten" $data[1] = "one"
a … ソートする連想配列
f … ソートフラグ
PHP3(3.0.13 以降)、PHP4 、PHP5
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com