首頁  >  文章  >  後端開發  >  php怎麼刪除二維數組中的幾個子數組

php怎麼刪除二維數組中的幾個子數組

PHPz
PHPz原創
2023-04-18 10:26:08530瀏覽

在PHP中,有時候我們需要從一個二維陣列中刪除幾個陣列。這個需求相對來說比較常見,例如我們需要忽略一些特定的數據,或是把某些不符合要求的數據從原始數據集中過濾出來。本文將介紹如何利用PHP內建函數和自訂函數來刪除二維陣列中的一些陣列。

一、PHP內建函數array_filter()刪除二維陣列中的幾個陣列

PHP內建函數array_filter()可以過濾掉一個陣列中的某些元素,傳回一個新的數組。在刪除二維數組中的幾個數組時,我們可以藉助此函數來實現。下面是一個例子:

$array = [
    ['id' => 1, 'name' => 'Alice', 'gender' => 'female'],
    ['id' => 2, 'name' => 'Bob', 'gender' => 'male'],
    ['id' => 3, 'name' => 'Charlie', 'gender' => 'male'],
    ['id' => 4, 'name' => 'David', 'gender' => 'male']
];

$exclude_ids = [2, 3];

$new_array = array_filter($array, function($item) use ($exclude_ids) {
    return !in_array($item['id'], $exclude_ids);
});

print_r($new_array);

這個範例中,我們有一個包含4個子數組的二維數組$array,我們想要從中刪除id為2和3的子數組。我們定義了$exclude_ids數組來包含需要刪除的id值。然後我們使用array_filter()函數,並將其傳遞給一個閉包函數。這個函數檢查子數組中的'id'值是否在$exclude_ids數組中,如果在就回傳false,否則回傳true。此外,我們也使用了use語句,使得閉包函數能夠存取$exclude_ids數組。最終,我們得到了一個新的數組,僅包含'id'值不為2和3的子數組。

二、自訂函數刪除二維數組中的幾個數組

除了使用內建函數外,我們也可以寫自己的函數來刪除二維數組中的幾個數組。這樣可以更靈活地控制刪除的方式和條件。下面是一個例子:

function exclude_subarrays($array, $condition) {
    $new_array = [];
    foreach($array as $key => $subarray) {
        $should_exclude = true;
        foreach($condition as $k => $v) {
            if($subarray[$k] !== $v) {
                $should_exclude = false;
                break;
            }
        }
        if(!$should_exclude) {
            $new_array[] = $subarray;
        }
    }
    return $new_array;
}

$array = [
    ['id' => 1, 'name' => 'Alice', 'gender' => 'female'],
    ['id' => 2, 'name' => 'Bob', 'gender' => 'male'],
    ['id' => 3, 'name' => 'Charlie', 'gender' => 'male'],
    ['id' => 4, 'name' => 'David', 'gender' => 'male']
];

$exclude_condition = ['id' => 2, 'gender' => 'male'];

$new_array = exclude_subarrays($array, $exclude_condition);

print_r($new_array);

這個範例中,我們同樣有一個包含4個子數組的二維數組$array,需要刪除id為2且gender為male的子數組。我們寫了一個名為exclude_subarrays的函數來完成這個任務,這個函數接受兩個參數:原始數組$array和一個包含刪除條件的關聯數組$condition。在函數內部,我們建立了一個空的新陣列$new_array,然後使用foreach遍歷原始數組中的所有子數組。對於每個子數組,我們都定義了一個$should_exclude標誌,在初始化時設為true。我們又使用了一個foreach遍歷刪除條件$condition中的每個鍵值對。對於每個鍵值對,我們都檢查目前子數組中對應的鍵是否等於要求的值。如果等於,表示應該刪除這個子數組,於是將$should_exclude標誌設為false,並跳出迴圈。否則,繼續檢查下一個鍵值對。在完成整個$condition數組的檢查後,如果$should_exclude仍然為true,表示當前的子數組不需要被刪除,於是將它加入$new_array數組中。最後,將新數組傳回即可。

總結

以上就是兩種方式來刪除二維陣列中的幾個陣列。雖然內建函數array_filter()的寫法較短,但自訂函數比較靈活,在某些場合會更適用。在使用過程中,應根據實際情況靈活選擇。

以上是php怎麼刪除二維數組中的幾個子數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn