首頁 >後端開發 >PHP問題 >php 去掉空的陣列

php 去掉空的陣列

WBOY
WBOY原創
2023-05-23 10:20:071457瀏覽

在 PHP 的開發中,常常會遇到需要移除空的陣列的情況。因為空的陣列會佔用系統的資源,增加程式的複雜度和運作成本。因此,正確地去除空的陣列對於 PHP 開發來說是非常重要的。

下面我們來介紹幾個在 PHP 中移除空的陣列的方法。

方法一:使用 array_filter 函數

PHP 中提供了 array_filter 函數,可以輕鬆移除空的陣列。

array_filter 函數的基本語法如下:

array array_filter ( array $array [, callable $callback [, int $flag ]] )

其中,$array 為輸入的數組,$callback 為可選參數,指定回調函數,$flag 為可選參數,指定額外的標誌。回呼函數需要傳回一個布林值,用來判斷數組的每個元素是否應該被保留。

下面的範例示範如何使用array_filter 函數去除空的陣列:

$data = array('foo', false, -1, null, 0, '', 'bar');
$result = array_filter($data, function($item) {
    return !empty($item);
});
print_r($result);

上面的程式碼輸出結果為:

array (
  0 => 'foo',
  2 => -1,
  6 => 'bar',
)

透過使用array_filter 函數和回調函數,我們可以去掉數組中的空值,只保留有效的值。

方法二:使用 foreach 迴圈

如果你不想使用 array_filter 函數,那麼也可以藉助 foreach 迴圈來移除空的陣列。其實原理也很簡單,我們遍歷陣列的每個元素,判斷元素是否為空,然後將有效的值儲存到一個新的陣列中。

下面的範例示範如何使用foreach 迴圈移除空的陣列:

$data = array('foo', false, -1, null, 0, '', 'bar');
$result = array();
foreach ($data as $item) {
    if (!empty($item)) {
        $result[] = $item;
    }
}
print_r($result);

上面的程式碼輸出結果為:

array (
  0 => 'foo',
  2 => -1,
  6 => 'bar',
)

透過使用foreach 迴圈和判斷條件,我們可以得到與array_filter 函數相同的結果,去掉陣列中的空值,只保留有效的值。

方法三:使用 array_reduce 函數

除了 array_filter 和 foreach 迴圈之外,PHP 還提供了 array_reduce 函數用於對數組中的所有值進行計算。我們可以使用 array_reduce 函數來實現去除空的陣列的功能。

array_reduce 函數的基本語法如下:

mixed array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )

其中,$array 為需要處理的數組,$callback 為回呼函數,$initial 為可選參數,指定回呼函數的初始值。

下面的範例示範如何使用array_reduce 函數去除空的陣列:

$data = array('foo', false, -1, null, 0, '', 'bar');
$result = array_reduce($data, function($accumulator, $item) {
    if (!empty($item)) {
        $accumulator[] = $item;
    }
    return $accumulator;
}, array());
print_r($result);

上面的程式碼輸出結果為:

array (
  0 => 'foo',
  1 => -1,
  2 => 'bar',
)

透過使用array_reduce 函數和回調函數,我們可以去掉數組中的空值,只保留有效的值。

方法四:使用 array_diff 函數

array_diff 函數是 PHP 的另一個陣列處理函數,它的作用是傳回在一個陣列中但不在其它陣列中的值。

下面的範例示範如何使用array_diff 函數去除空的陣列:

$data = array('foo', false, -1, null, 0, '', 'bar');
$result = array_diff($data, array(null, '', false, 0));
print_r($result);

上面的程式碼輸出結果為:

array (
  0 => 'foo',
  2 => -1,
  6 => 'bar',
)

透過使用array_diff 函數,我們可以去掉數組中的空值,只保留有效的值。需要注意的是,作為第二個參數傳遞給 array_diff 函數的陣列中需要包含所有可能為空的值。

結論

透過上述幾種方法,我們可以輕鬆地移除 PHP 陣列中的空值,只保留有效的值。在實際開發中,我們需要根據實際情況選擇使用哪種方法。如果只需要移除空值,建議使用 array_filter 函數或 foreach 迴圈。如果需要計算數組中的其它值,可以考慮使用 array_reduce 函數。同時,在使用 array_diff 函數時,需要注意第二個參數中需要包含所有可能為空的值。

以上是php 去掉空的陣列的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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