如何将字符串拆分为在数组中具有数组的关联数组

时间:2019-01-31 06:53:49

标签: php arrays

我有以下字符串:names=bob;mike;sam&age=30;23;22&fav-nums=200;300;400

我想知道是否有一个函数可以将其拆分为一个关联数组,该数组作为其中的数组。例如

Array (
    ["name"] => Array
                (
                    bob,
                    mike,
                    sam
                )
    ["age"] =>  Array
                (
                    30,
                    23,
                    22
                )
    ["fav-nums"] => Array
                    (
                        200,
                        300,
                        400
                    )
)

3 个答案:

答案 0 :(得分:0)

不确定是否存在创建子数组的直接方法,但是parse_str()会将初始字符串除以&并创建起点,然后使用{{1}处理每个元素}(和explode())创建子数组。

array_walk()

这给...

$start = 'names=bob;mike;sam&age=30;23;22&fav-nums=200;300;400';
parse_str($start, $output);
array_walk($output, function ( &$data ) { $data = explode(";", $data); });
print_r($output);

答案 1 :(得分:0)

您可以使用parse_str()explode()函数来实现此目的。

步骤:

1)使用parse_str()函数,它将把您的字符串分割为关联数组。

2)现在循环遍历并查找键值。

3)键将是必需的键(名称,年龄和常用数字),并且您希望将值设置为数组。

4)使用; explode()值,您将获得所需的值。

工作代码:

$str = "names=bob;mike;sam&age=30;23;22&fav-nums=200;300;400";
parse_str($str, $output);
$arr = [];
if (! empty($output)) {
    foreach ($output as $key => $value) {
        $arr[$key] = explode(';', $value);
    }
}
echo '<pre>';print_r($arr);echo '</pre>';

输出:

Array
(
    [names] => Array
        (
            [0] => bob
            [1] => mike
            [2] => sam
        )

    [age] => Array
        (
            [0] => 30
            [1] => 23
            [2] => 22
        )

    [fav-nums] => Array
        (
            [0] => 200
            [1] => 300
            [2] => 400
        )

)

答案 2 :(得分:-1)

您可以使用 array_map 函数遍历整个数组,因为它可以提高代码速度。另外,始终使用 parse_str 来读取查询字符串并将其转换为数组形式。

dept

结果显示

var r = request({uri: 'http://stackoverflow.com'  }, function (error, response, body) {
    console.log('url requested ') ;
    if (!error){
        console.log(body);
    }
    else
    {
        console.log(error);
    }
});

r.abort();