php數組如何根據相同值再分組

PHPz
發布: 2023-04-14 19:01:14
原創
141 人瀏覽過

PHP數組是一種非常常用的資料類型,它在我們的開發過程中經常被使用。在實際開發中,我們經常會遇到需要根據數組中相同的值再進行分組的情況,那麼這個該怎麼實現呢?

在PHP中,我們可以使用array_column()、array_multisort()等函數來實作對陣列進行排序和分組的運算。下面我們一起來看一些具體的實作方法。

  1. 使用array_column()函數取得相同值的鍵名稱

首先,我們可以使用array_column()函數,該函數可以從一個陣列中取出某個鍵所對應的值,同時傳回一個陣列。我們可以根據array_column()函數傳回的數組,也就是相同值的集合再進行分組運算。

具體實作方法如下:

<code class="php"><?php
// 定义一个数组
$arr = array(
    array('id'=>1, 'name'=>'张三', 'age'=>18),
    array('id'=>2, 'name'=>'李四', 'age'=>20),
    array('id'=>3, 'name'=>'张三', 'age'=>22),
    array('id'=>4, 'name'=>'王五', 'age'=>25),
    array('id'=>5, 'name'=>'赵六', 'age'=>20),
);

// 获取相同值的键名
$key_arr = array_column($arr, 'name');

// 分组操作
$res = array();
foreach($key_arr as $k=>$v) {
    $res[$v][] = $arr[$k];
}
print_r($res);
?></code>
登入後複製

在上述程式碼中,我們定義了一個數組,包含了多個資料。然後,我們透過array_column()函數取出資料中所有'name'鍵所對應的值,也就是['張三', '李四', '張三', '王五', '趙六']。

接著,我們使用foreach循環對上述數組進行遍歷,將相同值的資料分組並儲存到$res數組中。最終,$res數組就是我們需要的分組結果。

  1. 使用array_multisort()函數進行多維數組排序

另外一種實作方法是使用array_multisort()函數對多維數組進行排序,將相同值的資料排在一起,然後進行分組運算。

具體實作方法如下:

<code class="php"><?php
// 定义一个数组
$arr = array(
    array('id'=>1, 'name'=>'张三', 'age'=>18),
    array('id'=>2, 'name'=>'李四', 'age'=>20),
    array('id'=>3, 'name'=>'张三', 'age'=>22),
    array('id'=>4, 'name'=>'王五', 'age'=>25),
    array('id'=>5, 'name'=>'赵六', 'age'=>20),
);

// 对数组进行排序
$name_arr = array_column($arr, 'name');
$age_arr = array_column($arr, 'age');

array_multisort($name_arr, SORT_ASC, SORT_STRING, $age_arr, SORT_ASC, SORT_NUMERIC, $arr);

// 分组操作
$res = array();
foreach($arr as $k=>$v) {
    $res[$v['name']][] = $v;
}
print_r($res);
?></code>
登入後複製

以上程式碼中,我們使用array_column()函數取得'name'和'age'鍵所對應的值,然後使用array_multisort()函數對數組進行排序。 array_multisort()函數可以接收多個陣列參數,並根據第一個陣列的值升序或降序排序後,再將其他陣列依照第一個陣列的順序進行對應的排序。在本例中,我們將$name_arr設定為升序排序,$age_arr設定為升序排序。

最後,我們使用foreach循環將相同值的資料分組,並將結果儲存到$res數組中。最終,$res數組就是我們需要的分組結果。

總結

以上兩種方法都可以實作PHP陣列依照相同值再進行分組的運算。具體實現選擇哪種方法取決於自己的需求以及資料的結構等因素。無論採用哪種方法,我們都可以實現數組的有效分類和統計,進而快速提高資料處理的效率和可靠性。

以上是php數組如何根據相同值再分組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!