いつまで続くのか、何を書くのか、それもまた流れのままに 頭の中にまとまらないものがあるから そんなのがふと出た時に書いていく
僕のネット帳
スポンサーサイト
-----------  CATEGORY: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ページトップへ
php 文字列の任意の範囲を指定した自然順の配列ソート
2008-01-14-Mon  CATEGORY: php
ということで、前回のソート作った後にちょっと問題発生したので再度別のを作った。
今回のは、一定の部分抜き出して自然順で並べる。
つまり、natsort()のように自然順で並べるんだけれども、
それを一部分だけを見てやりたいなっていう話。
※前回のは数字部分だけしかみていないのでちと違った。
で、今回のはこんな感じ。
<?php

//***比較用関数
function cmp($a,$b){

//***任意の文字列を取得する
//***ここではhttp以下全てを取っている。
//***範囲決めたいなら、strposとかで出現場所を調べて希望範囲を決めてやればいけるはず。

$match_a = strstr($a,"http");
$match_b = strstr($b,"http");

//***自然順に比較して次を返す
//***① $match_a == $match_a の時 : 0
//***② $match_a < $match_a の時 : 負の値
//***③ $match_a > $match_a の時 : 正の値
return strnatcmp($match_a,$match_b);


}

$aaa = array("おかん11歳http:test_101.html",
"かまぼこ111円http:test_22.html",
"あいどるぷらいすれすhttp:test_25.html",
"うめぼしすっぱいhttp:arigatou_11.html",
"たたかう料理人http:arigatou_19.html",
"Macグリル166円http:arigatou_8.html",
"ジョージ77歳http:doumo_25.html",
"おとん55歳http:doumo_15.html",
"Long17ヤードhttp:arigatou_12.html",
"ジュリアン最高http:test_2.html"
);

print_r($aaa);

natsort($aaa);
//***関数使った配列ソート
usort($aaa,"cmp");

echo '<br />';
print_r($aaa);


?>

結果。
配列①:おかん11歳http:test_101.html
配列②:かまぼこ111円http:test_22.html
配列③:あいどるぷらいすれすhttp:test_25.html
配列④:うめぼしすっぱいhttp:arigatou_11.html
配列⑤:たたかう料理人http:arigatou_19.html
配列⑥:Macグリル166円http:arigatou_8.html
配列⑦:ジョージ77歳http:doumo_25.html
配列⑧:おとん55歳http:doumo_15.html
配列⑨:Long17ヤードhttp:arigatou_12.html
配列⑩:ジュリアン最高http:test_2.html



配列①:Macグリル166円http:arigatou_8.html
配列②:うめぼしすっぱいhttp:arigatou_11.html
配列③:Long17ヤードhttp:arigatou_12.html
配列④:たたかう料理人http:arigatou_19.html
配列⑤:おとん55歳http:doumo_15.html
配列⑥:ジョージ77歳http:doumo_25.html
配列⑦:ジュリアン最高http:test_2.html
配列⑧:かまぼこ111円http:test_22.html
配列⑨:あいどるぷらいすれすhttp:test_25.html
配列⑩:おかん11歳http:test_101.html
となりました。
めでたしめでたし。

ここでのキモはhttp以下の文字、arigatouならarigatouで固まって、かつ、数字順になっていることです。
ページトップへ  トラックバック0 コメント0
コメント

管理者にだけ表示を許可する
 
トラックバック
TB*URL
<< 2017/05 >>
S M T W T F S
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -


余白 Copyright © 2005 僕のネット帳. all rights reserved.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。