我有一个数组,如果它们匹配条件语句,我想切片记录;我想保留原始索引值,这就是为什么我要尝试切片而不是推送索引值从0开始的新数组。
$array = Array(
[item1] => Array
(
[sale] => 29.92
[onhand] => 0
[date] => 2019-09-16
)
[item2] => Array
(
[sale] => 0
[onhand] => 0
[date] => 2019-09-16
)
[item3] => Array
(
[sale] => 0
[onhand] => 230
[date] => 2019-09-16
)
)
我的条件:
foreach($items as $item){
if( $item['sale'] == 0 && $item['onhand'] == 0) {
array_slice($array, $item);
}
}
期望的输出:
$array = Array(
[item1] => Array
(
[sale] => 29.92
[onhand] => 0
[date] => 2019-09-16
)
[item3] => Array
(
[sale] => 0
[onhand] => 230
[date] => 2019-09-16
)
)
上面没有切片,我不确定切片是否适合这里的工具,或者我是否需要额外的映射?
我的另一个想法是将所需的项目推送到一个新的数组,但是会将索引从[item1[], item2[], item3[]]
写入[0[], 1[], 2[]]
,我非常需要它们保持原始状态。
非常感谢指导!
答案 0 :(得分:2)
除非您需要存储要移除的内容,否则您需要unset()
:
// Note the $key because we need to know which position we will conditionally unset
foreach($items as $key=>$item){
if( $item['sale'] == 0 && $item['onhand'] == 0) {
unset($items[$key]);
}
}
此外,如果您希望"切片"它实际上需要array_splice()