2015-12-21 42 views
-1

我的價值就像。我想排序給定的子字符串基地上的數組

array("app_text_music" , "app_text_ball" , "app_text_cat") 

我想在音樂,球和貓的基礎上對這個數組數據進行排序。
我該怎麼辦呢?請給我建議。當我使用asort時,它只能看到數組的第一個字符。

asort(array("app_text_music" , "app_text_ball" , "app_text_cat")); 

如何對這種類型的數組值進行排序。 我想獲得像汽車,球或音樂的上述子字符串,並在該類別的基礎上排序。

+0

sort()函數是你的朋友 - http://php.net/manual/en/function.sort.php – Ceeee

+0

是 「app_text_」 前綴不變或受到什麼變化嗎? –

回答

1

如果你真的排序的前綴的基礎上,對 你需要執行自己的排序功能。

你就可以做到這一點使用用戶定義的函數 與usort()

但是,否則,只是排序()就足夠了。

<?php 
$test = 
[ 
    "app_text_music", 
    "app_text_ball", 
    "app_text_cat", 
    "app_media_dog", 
    "app_media_book" 
]; 

usort($test, function($a, $b) 
{ 
    $a = array_pop(explode('_', $a)); 
    $b = array_pop(explode('_', $b)); 

    return (strcasecmp($a, $b)); 
}); 


// This will output : 

array(5) { 
    [0]=> 
    string(13) "app_text_ball" 
    [1]=> 
    string(14) "app_media_book" 
    [2]=> 
    string(12) "app_text_cat" 
    [3]=> 
    string(13) "app_media_dog" 
    [4]=> 
    string(14) "app_text_music" 
} 
5

基於索引的分類排序,並且您正在使用沒有索引的數組。你的情況,你可以只用排序():)

$test = array("app_text_music" , "app_text_ball" , "app_text_cat"); 

sort($test); 
+0

但我想在app_text_(該元素)的基礎上排序數組? –

+0

,因爲整個數組元素的前綴是app_text _(...),sort()是正確的。那麼,如果前綴「app_text_」被拒絕改變......那你怎麼描述的那種沒有意義...... – MTroy

+0

編輯:可能是尋找ursort()使你的功能排序? http://php.net/manual/fr/function.usort.php – MTroy