gpt4 book ai didi

php - 将数组拆分为子数组

转载 作者:可可西里 更新时间:2023-10-31 22:13:36 31 4
gpt4 key购买 nike

我想拆分一个数组:

$o = json_decode('[{"id":"1","color":"green"},{"id":"2","color":"green"},{"id":"3","color":"yellow"},{"id":"4","color":"green"}]');

根据每一项的颜色属性,填充相应的子数组

$a = array("green", "yellow", "blue");

function isGreen($var){
return($var->color == "green");
}

$greens = array_filter($o, "isGreen");
$yellows = array_filter($o, "isYellow");
// and all possible categories in $a..

我的 $a 的长度 > 20,并且可以增加更多,所以我需要一个通用的方法而不是手动编写函数

似乎不存在生成所有过滤数组的函数array_split
否则我可能需要一种 lambda 函数

最佳答案

你可以这样做:

$o = json_decode('[{"id":"1","color":"green"},{"id":"2","color":"green"},{"id":"3","color":"yellow"},{"id":"4","color":"green"}]');

$greens = array_filter($o, function($item) {
if ($item->color == 'green') {
return true;
}

return false;
});

或者,如果你想创建一些真正通用的东西,你可以执行如下操作:

function filterArray($array, $type, $value)
{
$result = array();
foreach($array as $item) {
if ($item->{$type} == $value) {
$result[] = $item;
}
}

return $result;
}

$o = json_decode('[{"id":"1","color":"green"},{"id":"2","color":"green"},{"id":"3","color":"yellow"},{"id":"4","color":"green"}]');
$greens = filterArray($o, 'color', 'green');
$yellows = filterArray($o, 'color', 'yellow');

在我的第二个示例中,您可以只传递数组并告诉函数根据什么值过滤什么(例如颜色或其他 future 的属性)。

请注意,我没有做任何错误检查属性是否真的存在

关于php - 将数组拆分为子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12205255/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com