字符串到关联数组转换

问题描述 投票:1回答:2

我已经苦苦挣扎了几天,想把它扔出去看看是否有人有任何想法。

基本上我有一个字符串,例如

1) "/0/bar"

2) "/build/0/foo/1"

并需要将其转换为多维数组

1) $result[0][bar] 
2) $result[build][0][foo][1]

到目前为止,我已经尝试过:

$query = "/build/0/foo/1";
$queryAr = [];
$current = &$queryAr;
$keys = explode("/", $query);

foreach($keys as $key) {
  @$current = &$current[$key];
}

$current = $value;

平息输出是实现这一目标的一种非常黑客的方式......

php arrays string multidimensional-array
2个回答
1
投票

你需要修剪字符串的第一个/live demo

<?php
$query = "/build/0/foo/1";
$queryAr = [];
$current = &$queryAr;
$keys = explode("/", trim($query, '/'));

foreach($keys as $key) {
  @$current = &$current[$key];
}

$current = $value;
print_r($queryAr);

0
投票

我尝试了一个递归函数版本:

$query = "/build/0/foo/1";
print_r($result = buildNestedArray(explode('/', trim($query, '/'))));

function buildNestedArray($keys)
{
    $k = current($keys);

    $result = [$k => 'DONE'];
    array_shift($keys);
    if (sizeof($keys) > 0) { $result[$k] = buildNestedArray($keys); }

    return $result;
}

输出:Array ( [build] => Array ( [0] => Array ( [foo] => Array ( [1] => DONE ) ) ) )

© www.soinside.com 2019 - 2024. All rights reserved.