php - 在没有foreach的多维数组php中按值删除
问题描述
我正在循环这样的数组:
[0] => stdClass Object
(
[codigo] => 1
[producto] => coche
)
[1] => stdClass Object
(
[codigo] => 2
[producto] => coche
)
[2] => stdClass Object
(
[codigo] => 3
[producto] => casa
)
[3] => stdClass Object
(
[codigo] => 4
[producto] => Avion
)
[4] => stdClass Object
(
[codigo] => 5
[producto] => casa
)
我有foreach,没关系,但是现在,我希望当我找到像'casa'这样的值时,删除所有具有该值的元素。那么数组循环会更小。然后,当我找到下一个值“coche”时,删除所有具有该名称的元素,并这样做直到找到所有值。那是因为很多元素具有相同的值,而不是一直循环,我可以在查找时取消设置这些元素。
就像我第一次找到值 coche 一样,数组看起来像:
[2] => stdClass Object
(
[codigo] => 3
[producto] => casa
)
[3] => stdClass Object
(
[codigo] => 4
[producto] => Avion
)
[4] => stdClass Object
(
[codigo] => 5
[producto] => casa
)
我有这个:
foreach ($products as $key => $value) {
if(value == 'coche') $coche = 1;
//inside this if, i just want to delete from product's all elements with
// value coche, but i don't want to use another foreach, because is a
// non sense, it must be with a function.
}
解决方案
您可以为此使用array_filter:
<?php
$elements = [
0 => [
'codigo' => 1,
'producto' => 'coche'
],
1 => [
'codigo' => 2,
'producto' => 'coche'
],
2 => [
'codigo' => 3,
'producto' => 'casa'
],
3 => [
'codigo' => 4,
'producto' => 'Avion'
],
4 => [
'codigo' => 5,
'producto' => 'casa'
]
];
$els = array_filter($elements, function($el)
{
return ($el['producto'] !== 'casa');
});
echo '<pre>'. print_r($els, 1) .'</pre>';
这里我使用数组,所以只需替换这一行:
return ($el['producto'] !== 'casa');
和:
return ($el->producto !== 'casa');
它适用于您的代码。
本质上,我们返回数组中 producto 不等于 casa 的所有元素。
然后你可以只循环你想要的元素。你也可以在你的 foreach 里面做:
foreach ($elements as $el)
{
if ($el->producto == 'casa') {continue;}
}
推荐阅读
- c - 为什么进入if语句后变量var的值是1?
- java - 转换 JSONObject 中的缓冲阅读器 (json-simple)
- python - 使用 Python 的 Bokeh 和 Folium 模块创建的仪表板/地图是否安全?数据是否上传到任何外部服务器?
- git-annex - 有没有办法只下载datalad数据集的一部分?
- bash - 在脚本中运行命令并检查返回值
- css - CSS Grid Container 在 Flex 容器内收缩(故事书复制)
- compilation - 如何获取文件以正确编译。乳胶返回*几何*驱动程序:自动检测
- python-3.x - ModuleNotFoundError:使用 pyinstaller 在 Jenkins 中没有名为“请求”的模块
- java - 如何从 Android 中的 ArrayList 中获取最接近的双精度值
- xml - 使用 XSLT 3.0 转换 XML 如何根据兄弟元素值选择要输出的元素