1. 程式人生 > >php 對二維陣列的某個鍵的值進行排序

php 對二維陣列的某個鍵的值進行排序

有時候我們需要對二維陣列的某個鍵的值進行排序,這裡就是討論這個問題。我們可以使用array_multisort()這個函式。array_multisort() 函式對多個數組或多維陣列進行排序。

引數中的陣列被當成一個表的列並以行來進行排序 - 這類似 SQL 的 ORDER BY 子句的功能。第一個陣列是要排序的主要陣列。陣列中的行(值)比較為相同的話,就會按照下一個輸入陣列中相應值的大小進行排序,依此類推。

第一個引數是陣列,隨後的每一個引數可能是陣列,也可能是下面的排序順序標誌(排序標誌用於更改預設的排列順序)之一:

  • SORT_ASC - 預設,按升序排列。(A-Z)
  • SORT_DESC - 按降序排列。(Z-A)

隨後可以指定排序的型別:

  • SORT_REGULAR - 預設。將每一項按常規順序排列。
  • SORT_NUMERIC - 將每一項按數字順序排列。
  • SORT_STRING - 將每一項按字母順序排列。

語法:array_multisort(array1,sorting order,sorting type,array2,array3...)

  • array1:必需。規定輸入的陣列。
  • sorting order:可選。規定排列順序。可能的值是 SORT_ASC 和 SORT_DESC。
  • sorting type:可選。規定排序型別。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。
  • array2:可選。規定輸入的陣列。
  • array3:可選。規定輸入的陣列。

字串鍵名將被保留,但是數字鍵將被重新索引,從 0 開始,並以 1 遞增。可以在每個陣列後設置排序順序和排序型別。如果沒有設定,每個陣列引數會使用預設值。

下面是一個例子:

 echo '二維陣列如下:'.'<br / >';
    for($i=0; $i<=5; $i++)
    {
        $arr[$i]['val'] = mt_rand(1, 100);
        $arr[$i]['num'] = mt_rand(1, 100);
    }   
    echo '<pre>';
    print_r($arr);
    echo '</pre>';
    echo '從二維陣列中抽出鍵為val,單獨成另一個數組:'.'<br / >';
    foreach ($arr as $key => $row)
    {
        $vals[$key] = $row['val'];
        $nums[$key] = $row['num'];
    }
    echo '<pre>';
    print_r($vals);
    echo '</pre>';
    echo '對其進行排序:'.'<br / >';
    array_multisort($vals, SORT_ASC, $arr);
    echo '<pre>';
    print_r($vals);
    echo '</pre>';
    echo '<pre>';
    print_r($arr);
    echo '</pre>';

http://www.nowamagic.net/librarys/veda/detail/1124

相關推薦

php陣列字串和數字進行排序

//Example for sorting by values for an alphanumeric array also having case-sensitive data $exampleArray1 = $exampleArray2 = arr

php 陣列某個進行排序

有時候我們需要對二維陣列的某個鍵的值進行排序,這裡就是討論這個問題。我們可以使用array_multisort()這個函式。array_multisort() 函式對多個數組或多維陣列進行排序。 引數中的陣列被當成一個表的列並以行來進行排序 - 這類似 SQL 的 OR

PHP中如何數組按某個進行排序

取出 ria var index keyword 方式 pac plain 進行 $arr=[ array( ‘name‘=>‘張三‘, ‘age‘=>28 ), array( ‘name‘

php陣列中某一欄位進行排序

<?php   $array = array(  array('name'=>'手機','brand'=>'諾基亞','price'=>1050),  array('name'=>'膝上型電腦','brand'=>'lenovo','pr

php 數組根據進行排序

數組 維數 color bsp 成功 data array style arr // 先獲取要排序的值 $createTime = array_column($data, ‘create_time‘); // 排序成功 array_multisort($creat

php 陣列某個排序

<?php $arr = array( array('id'=>2,'price'=>100,'num'=>1), array('id'=>3,'price'=>123,'num'=>1), array('id'=>6,'price'=>11

陣列某個名中的進行分組

對二維陣列的某個鍵名中的值進行分組 以下為程式碼 /**  * [array_group_by ph]  * @param  [type] $arr [二維陣列]  * @param  [type] $key [鍵名]  * @retu

PHP陣列按照某個大小進行排序

實際工作中,常常要對陣列進行排序操作,下面簡單講解一下,運用array_multisort()函式 進行對多維陣列鍵值大小進行排序。 <?php /** * 多維陣列按照某索引的值大小進行排序 * @author zhao jinhan * @email [e

php 刪除陣列某個key

/** * 根據key刪除陣列中指定元素 * @param array $arr 陣列 * @param string/int $key 鍵(key) * @return array */ private function a

PHP通過陣列獲取一

有如下既定陣列: $inviteType = [ '掃碼' => [ 'type' => 0, 'point' => 5, ],

php獲取多陣列某個特定(陣列下標)的所有,具體總結下其餘的方法

1、專案中經常會用到獲取多維陣列某個特定鍵的所有值,經常的做法是迴圈獲取,今天在網上看到一個不用迴圈獲取的辦法。 /* author: [email protected] description: 根據某一特定鍵(下標)取出一維或多維陣列的所有值;不用迴圈的理由是考慮大陣

一個給定的數組按照指定的進行排序

arr pre des ray cti lse 指定 key _array public function set_s(){ $arr = [ [‘one‘ => 6,‘two‘ => 19], [‘one‘ => 36,

PHP陣列轉化為對應為一列的另一個陣列

一點小知識,記下來。 $arr=array( 'a'=>array( 'a', 'b', 'c' ),

php陣列修改

最近遇到一個問題,是關於json資料提交的時候,總是報出【object object】的錯誤,查了晚上需要資料,大部分的說法是json資料格式不規範導致的錯誤。一般建議說將dataType型別註釋掉。但是都試了一下都沒有解決。最後還懷疑是使用json_encode這個函式php版本的問題等等,都沒有解決。主要

PHP裡.如何定義陣列和賦.並且把陣列中的填充到table中。

php: require 'smarty/libs/Smarty.class.php'; $smarty = new Smarty;//設定各個目錄的路徑,這裡是安裝的重點 $smarty->template_dir ="smarty/templates/temp

PHP 判斷陣列中是否存在某個陣列

function multidimensional_search($parents, $searched) { if (empty($searched) || empty($parents)) { return false; } foreach ($pa

php陣列按指定的排序

/*二維陣列按指定的鍵值排序*/ function array_sort($array,$keys,$type='asc'){ if(!isset($array) || !is_array($arr

PHP根據某欄位陣列進行排序函式

/** * 二維陣列根據欄位進行排序 * @params array $array 需要排序的陣列 * @params string $field 排序的欄位 * @params string $sort 排序順序標誌 SORT_DESC 降序;SORT

陣列最大首尾相連

  題目要求: 返回一個整數陣列中最大子陣列的和。 輸入一個整形陣列,數組裡有正數也有負數。 陣列中連續的一個或多個整陣列成一個子陣列,每個子陣列都有一個和。 如果陣列A[0]……A[j-1]首尾相鄰,允許A[i-1],…… A[n-1],A[0]……A[j-1]之和最大。同時返回最大子陣

應用結構體陣列的大小進行快排

      之前一直不會結構體,今天就簡單的學了一下,對陣列a[n][m]進行從大到小進行排序(n*m<=1e8),輸出座標,由於陣列比較大,用快排進行排序。下面就以簡單的a[3][3]為例。   #include<iostream>