如何在PHP中删除unit为0的数组元素并重排数组键名?
需求说明
我有一个多层数组结构,希望实现:当子数组的unit值为0时,删除该子数组元素,并重新排列数组键名(让原键名1的元素变为新的键名0,以此类推)。
原始数组结构
Array ( [0] => Array ( [unit] => 10 [harga] => 15000 ) [1] => Array ( [unit] => 7 [harga] => 10000 ) [2] => Array ( [unit] => 12 [harga] => 123123 ) )
当前实现代码片段(不完整)
$jumlah_penjualan = $data->unit; while ($jumlah_penjualan > 0) { $persediaan_pertama = $persediaan[0]['unit']; $harga_persediaan = $persediaan[0]['harg
解决方案
要实现需求,你可以通过过滤数组+重置索引的方式完成,这里提供两种简洁的实现方式:
方式一:手动遍历过滤
// 假设你的原数组是 $persediaan $filteredPersediaan = []; foreach ($persediaan as $item) { // 只保留 unit 不为0的子数组 if ($item['unit'] != 0) { $filteredPersediaan[] = $item; } } // $filteredPersediaan 就是处理后的数组,键名已经自动从0开始连续排列
方式二:使用array_filter + array_values
// 过滤掉unit为0的元素 $filtered = array_filter($persediaan, function($item) { return $item['unit'] != 0; }); // 重置数组索引,让键名从0开始连续 $filteredPersediaan = array_values($filtered);
这两种方法都能精准达成需求:移除所有unit=0的子数组,同时重新排列键名,确保索引是连续的0、1、2...
内容的提问来源于stack exchange,提问作者Mochamad Ramdanny Lukman
相关产品推荐
相关产品推荐

