php 将多维数组转换为一维数组,保留键[关闭]

qacovj5a  于 2023-01-29  发布在  PHP
关注(0)|答案(2)|浏览(129)

已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

昨天关门了。
Improve this question
如何使用键保留将多维数组转换为一维数组
输入数组

[
  {
    "1": 17
  },
  {
    "8": 1
  }
]

在出口处

[
  {
    "1": 17,
    "8": 1
  }
]
hfyxw5xn

hfyxw5xn1#

你已经把一个对象数组转换成了一个只包含一个对象和多个属性的数组,一旦转换成PHP,就意味着要以一种非常复杂的方式来处理结果数组,因为键/属性都是数字的EG $obj[0]->{1}
简单的数组看起来更有用,如下所示

$in = '[
    {"1": 17},
    {"8": 1}
]';

$j = json_decode($in);

$new = [];
foreach($j as $obj){
    foreach($obj as $k=> $v){
        $new[$k] = $v;
    }
}

RESULT是一个简单数组

Array
(
    [1] => 17
    [8] => 1
)

现在你可以简单地使用

echo $new[8];

但是如果你真的想要你要求的结构

$j = json_decode($in);
#print_r($j);
$new = [[]];
foreach($j as $obj){
    foreach($obj as $k=> $v){
        $new[0][$k] = $v;
    }
}
print_r($new);
echo json_encode($new);

结果

[{"1":17,"8":1}]
wgx48brx

wgx48brx2#

你可以用array_walk_recursive来实现它。下面的函数应该可以在提供的情况下工作。

function flatten(array $input): array
{
    $flat = [];
    array_walk_recursive($input, function ($value, $key) use (&$flat) {
        $flat[$key] = $value;
    });

    return $flat;
}

相关问题