加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 将数组拆分为子数组

发布时间:2020-12-13 17:42:29 所属栏目:PHP教程 来源:网络整理
导读:我想拆分一个数组: $o = json_decode('[{"id":"1","color":"green"},{"id":"2",{"id":"3","color":"yellow"},{"id":"4","color":"green"}]'); 根据每个项目的颜色属性,填充相应的子数组 $a = array("green","yellow","blue");function isGreen($var){ retur
我想拆分一个数组:

$o = json_decode('[{"id":"1","color":"green"},{"id":"2",{"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"}]');

$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"}]');
$greens = filterArray($o,'color','green');
$yellows = filterArray($o,'yellow');

在我的第二个例子中,你可以传递数组,并根据什么值告诉函数过滤什么(例如颜色或其他一些未来的属性).

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读