为了账号安全,请及时绑定邮箱和手机立即绑定

通过按键值过滤我的数组结果来创建新数组

通过按键值过滤我的数组结果来创建新数组

PHP
POPMUISE 2022-12-03 10:35:55
我有这个变量$office,它会在 print_r 时输出:{  "total": 3,  "results": [    {      "id": "4",      "blog_id": "11",      "office_name": "Japan",      "office_status": "inactive"    },    {      "id": "5",      "blog_id": "11",      "office_name": "USA",      "office_status": "active"    },    {      "id": "6",      "blog_id": "11",      "office_name": "London",      "office_status": "inactive"    },    }}现在我想创建一个新变量,其中带有office_statusof 的 变量active只会出现,我想要的输出是:{      "total": 1,      "results": [        {          "id": "5",          "blog_id": "11",          "office_name": "",          "office_status": "active"        },        }    }这是我到目前为止尝试过的,但它仍然返回所有数组:$v= "active";$k = "office_status";foreach($offices as $k => $v) {    $offices_active[$k] = array_filter($v);}print_r($offices_active);请帮忙。谢谢
查看完整描述

2 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

实际上它可以通过许多不同的方式来完成,一种方法就是这样做。


<?php

$object = '{"total":3,"results":[{"id":"4","blog_id":"11","office_name":"Japan","office_status":"inactive"},{"id":"5","blog_id":"11","office_name":"USA","office_status":"active"},{"id":"6","blog_id":"11","office_name":"London","office_status":"inactive"}]}';

$offices = json_decode($object,true);

$new = array_filter($offices['results'], function ($var) {

    return ($var['office_status'] == 'active');

});


$expected['total'] = count($new);

$expected['results'] = $new;

echo json_encode($expected);

?>

工作演示: https ://3v4l.org/NXZvQ


查看完整回答
反对 回复 2022-12-03
?
温温酱

TA贡献1752条经验 获得超4个赞

此代码有助于通过状态值获取数据


<?php


$src_ar = '{"total":3,"results":[{"id":"4","blog_id":"11","office_name":"Japan","office_status":"inactive"},{"id":"5","blog_id":"11","office_name":"USA","office_status":"active"},{"id":"6","blog_id":"11","office_name":"London","office_status":"inactive"}]}';

$office_info = json_decode($src_ar,true);


$inactive_array = sort_by_office_status('inactive', $office_info['results']);


print_r($inactive_array);


$active_array = sort_by_office_status('active', $office_info['results']);


print_r($active_array);



function sort_by_office_status( $office_status, $result_array ) {

    $return_ar =array();


    if( !empty( $result_array ) ) {

        foreach( $result_array as $res ) {

            if( $res['office_status'] == $office_status ) {

                $return_ar['results'][] = $res;

            }

        }

    } else {

        $return_ar['results'] = array();

    }


    $result_count = count( $return_ar['results'] );


    $return_ar['total'] = $result_count;


    return $return_ar;

}

?>


查看完整回答
反对 回复 2022-12-03
  • 2 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号