Sul*_*rat 1 php arrays foreach
我有一个数组,如:
Array
(
[0] => stdClass Object
(
[id] => 227
[catid] => 10
)
[1] => stdClass Object
(
[id] => 228
[catid] => 29
)
[2] => stdClass Object
(
[id] => 229
[catid] => 11
)
[3] => stdClass Object
(
[id] => 230
[catid] => 29
)
)
Run Code Online (Sandbox Code Playgroud)
现在我尝试根据 catid 从数组中删除一些对象:
foreach ($myarray as $item) {
if ($myarray->catid != 29) unset($item);
}
Run Code Online (Sandbox Code Playgroud)
但是如何从 foreach 上面创建新数组?基本上我想要一个只包含 catid = 29 的对象的新数组:
Array
(
[0] => stdClass Object
(
[id] => 228
[catid] => 29
)
[1] => stdClass Object
(
[id] => 230
[catid] => 29
)
)
Run Code Online (Sandbox Code Playgroud)
可以使用array_filter获取仅具有特定 catid 的值;
$filtered = array_filter($myarray, function($item){ return $item->catid === 29; });
Run Code Online (Sandbox Code Playgroud)
但这不会从原始数组中删除对象。要同时执行这两项操作,您只需将操作添加到循环中即可。
foreach ($myarray as $key => $value) {
if ($value->catid == 29) {
$new_array[] = $value;
unset($myarray[$key]);
}
}
Run Code Online (Sandbox Code Playgroud)