【发布时间】:2021-12-19 21:58:06
【问题描述】:
我正在做一个项目,我正在尝试通过 $keys 数组重构一个 json 对象 例如:
- 作为输入:
{
"message": "User Detail",
"code": 200,
"error": false,
"results": {
"user": {
"id": 2,
"name": "ali",
"country": {
"id": 50,
"name": "EGY"
}
},
"access_token": "=PQLkHJYIXB2uKbCq4sXIjD2GpBU2o"
}
}
- 作为输入:$keys 数组
$kyes = [
'code',
'user'=>[
'id',
'country'=>['name']
]
]
期待回归:
{
"code": 200,
"user": {
"id": 2,
"country": {
"name": "egy",
}
}
}
我试过的代码:
public function filter_multidimensional(array $array, array $keys){
$val = [];
foreach ($array as $key => $value) {
if (in_array($key,$keys)){
$val[$key] = $value;
}elseif (is_array($value)) {
$val[$key] = $this->filter_multidimensional($keys,$value);
}
}
return $val;
}
//-------
$this->filter_multidimensional($json,['code','user'=>['id','country'=>['name']]])
更新 1
json 输入不是 const,所以我的代码必须适应。这就是我想要做的。
【问题讨论】: