$a = array();
$a[5] = "5 banme";
$a[4] = "4 banme";
$a[0] = "0 banme";
$a[1] = "1 banme";
$a[2] = "2 banme";
print_r($a);
print(array_shift($a));
そもそも
こういうデータを作ったやつを殴るのが先ではあるけど、諸事情あんだよ。現実は色々と散らかってて汚いものなんだ。
で、まあ、察しついたかも知んないけど、結果は、
Array
(
[5] => 5 banme
[4] => 4 banme
[0] => 0 banme
[1] => 1 banme
[2] => 2 banme
)
5 banme
というわけで、
一番最初に突っ込んだ奴が先頭なんだな。この場合には、配列をこさえた際のインデックス番号にはなんの意味もない。意味ないどころかreset()されて台無しだ。
PHP: array_shift - Manual> ```
mixed array_shift ( array &$array )
array\_shift() は、array の最初の値を取り出して返します。配列 array は、要素一つ分だけ短くなり、全ての要素は前にずれます。 数値添字の配列のキーはゼロから順に新たに振りなおされますが、 リテラルのキーはそのままになります。
なので、
$a = array();
$a[5] = "5 banme";
$a[4] = "4 banme";
$a[0] = "0 banme";
$a[1] = "1 banme";
$a[2] = "2 banme";
sort($a);
print_r($a);
print(array_shift($a));
こうしてsort()いれてみる
Array
(
[0] => 0 banme
[1] => 1 banme
[2] => 2 banme
[3] => 4 banme
[4] => 5 banme
)
0 banme
納得するであろう形になった。インデックス番号だと思ってたけど添字なんだなコレ。
いやーよかった。
* *
* + うそです
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
うそなんだなー
$a = array();
$a[5] = "AAAAA";
$a[4] = "BBBBB";
$a[0] = "CCCCC";
$a[1] = "DDDDD";
$a[2] = "EEEEE";
sort($a);
print_r($a);
print(array_shift($a));
インデックスの番号と中身を組み替えた図。
Array
(
[0] => AAAAA
[1] => BBBBB
[2] => CCCCC
[3] => DDDDD
[4] => EEEEE
)
AAAAA
AAAAAは$a[5]だったはずの中身です。
中身でソートしちゃうよねー
こういうときはksort()をつかうんでした。
$a = array();
$a[5] = "AAAAA";
$a[4] = "BBBBB";
$a[0] = "CCCCC";
$a[1] = "DDDDD";
$a[2] = "EEEEE";
ksort($a);
print_r($a);
print(array_shift($a));
これで、
Array
(
[0] => CCCCC
[1] => DDDDD
[2] => EEEEE
[4] => BBBBB
[5] => AAAAA
)
CCCCC
一件落着。さて殴りにいこうか。
