色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

argsort php

林玟書1年前6瀏覽0評論

在PHP中,有時候我們需要對一個數組的元素進行排序,但是我們又不能破壞原數組的結構。這時候就可以使用PHP內置函數argsort()。

argsort()函數是一個非常實用的排序函數, 它會返回一組排序后的原數組下標的索引,而不是數組的元素。這些索引可以用于以特定順序訪問帶有復雜值和結構的數組。

下面舉個例子:

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
print_r(array_keys($age,37)); //輸出 "Array ( [0] =>Ben )"
echo ""."
"; $output = array_keys($age); print_r($output); //輸出 "Array ( [0] =>Peter [1] =>Ben [2] =>Joe )" echo ""."
"; asort($age); print_r($age); //輸出 "Array ( [Peter] =>35 [Ben] =>37 [Joe] =>43 )" echo ""."
"; $keys = array_keys($age); print_r($keys); //輸出 "Array ( [0] =>Peter [1] =>Ben [2] =>Joe )" echo ""."
";

在上面的例子中,我們定義了一個數組$age,并使用array_keys()函數獲取了數值為37的元素下標,查詢到為Ben。接著我們輸出了所有的數組下標,當然這個操作也可以用array_keys()函數來做。接下來我們對數組進行了排序,使用asort()函數將數組按升序排序。再通過array_keys()函數獲取排序后的新數組下標,再進行輸出,此時數組的順序就發生了變化。

當然上述例子僅僅是數組操作中argsort()函數的一個很簡單的應用,實際上,argsort()函數還有許多用法和注意事項,下面請繼續看下去。

argsort()函數的原型如下:

array argsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

其中,第一個參數是要排序的原始數組,第二個參數是所使用的排序類型,默認值為SORT_REGULAR。

需要注意的是,函數將會改變原始數組的順序,如果你需要保留原始數組的順序,那么你可以通過將原始數組復制到另一個數組中來實現。同樣,返回的排序結果中也只是下標,你還需要使用array_values()函數來取出數據。

下面是在PHP7中的使用例子:

$array = ['Hello', 'World', 'PHP'];
$indexes = array_keys($array); //獲取索引
array_multisort($array, SORT_ASC, SORT_STRING, 
$indexes, SORT_ASC, SORT_NUMERIC); //多維數組排序
$result = array_map(function($index) use ($array) { //重構數組
return $array[$index];
}, $indexes);
print_r($result); //輸出 "Array ( [0] =>Hello [1] =>PHP [2] =>World )"

在上面的例子中,首先我們定義了一個包含字符串元素的數組$array,并利用array_keys()函數獲得了含有元素下標的索引數組$indexes。隨后我們使用array_multisort()函數,將$array和$indexes同時進行排序。需要注意的是函數需要先按$indexes數組的默認類型升序排序,再按照數組內部結果升序排序,這個需要特別注意。最后,我們使用array_map()函數重構數組,并最終輸出結果。

雖然argsort()函數不一定是所有PHP程序員都使用的,但是在實際使用中,它是非常方便和實用的,特別是在需要對數組進行排序時,它可以幫你實現穩定排序,提高排序的效率。