nagajisの日不定記。
本日のアクセス数:0|昨日のアクセス数:0
ad
↑一応前回の投稿と関係があるので[乞御教示]タグをつけたが無視していただきたく候。一応解決しているし。
前回Excelのソートで壺にはまったところを助けていただいたのだが、今度はphpのほうで謎現象が発生している。似たような文字列(「0022-A-5810」とか「0075-G-1980」とか)を200個ほど放り込んだ配列をsort関数にかけると時々変なソート結果が返ってくる。今度サンプルデータを持ってくるが、おおまかなイメージとして
:
0025-A-0000
0026-F-4808
0080-B-1980
0075-G-2184:
が
:
0025-A-0000
0075-G-2184
0026-F-4808
0080-B-1980
:
になるような感じ。一つだけ変な所に紛れ込んでくる。規則性はない模様だ。
phpのマニュアルに「同じ値があったときのソート結果は一意じゃない」という注があるが、それとは関係がなさげ(元々このデータはデータベースのキーなのでユニーク性が保証されている)。
散々悩んだ末、投げやりになって
sort($array);
rsort($array);
sort($array);
とかやったら正しい結果が返ってきたもんだからますますわからんちん。どういうことやねん。
$arrayに放り込む時に明示的に文字列型に型キャストしたらなあかんとか、そういうことだろうか。今度それ試してみよう。
追記:「php sort おかしい」とかで検索すると答えが見つかった。だいにひきすうにSORT_STRINGを指定すれば解決しそう。しかしデータには数字だけで構成される文字列入ってないはずなんだよなー。
あ、そうか、正確にはハイフン入ってないデータのソートなんだ。んで0075E1890が75x10^1890と解釈されてる。なんでそこに入ってるかは別として。
でつ ではない。明らかに責任の範疇を越えたことをしようとしているが、大事にしてくれそうな方のねがいとあっては応えないわけにはいかない。不可逆に壊してしまわなければよいのだが。。。あとMr.Paul、あんなへんじでよかったんだろか。通じるやろか。相変わらず関係代名詞thatを多用する癖がぬけない。いっつじゃぱんぐりっしゅふぉーゆー。