$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()されて台無しだ。
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
)
AAAAAAAAAAは$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一件落着。さて殴りにいこうか。
