php - 拆分数组以创建关联数组

标签 php arrays

我有一个如下所示的数组:

a 12 34
b 12345
c 123456

所以数组看起来像

$array[0] = "a 12 34"
$array[1] = "b 12345"
$array[2] = "c 123456"

我正在尝试创建一个关联数组,这样

[a] => 12 34
[b] => 12345
[c] => 123456

我能否将数组分成两部分,一个包含“a、b、c”,另一个包含它们的内容并使用 array_combine()?或者还有其他方法吗?

最佳答案

You can do that within a loop like the snippet below demonstrates. Quick-Test here:

        $array      = array("a 12 34", "b 12345", "c 123456");
        $array2     = array();

        foreach($array  as $data){
            preg_match("#([a-z])(\s)(.*)#i", $data, $matches);
            list(, $key, $space, $value)    = $matches;
            $array2[$key]   = $value;
        }

        var_dump($array2);
        // YIELDS::
        array(3) {
            ["a"]=>  string(5) "12 34"
            ["b"]=>  string(5) "12345"
            ["c"]=>  string(6) "123456"
        }

Or using a Blend of array_walk() and array_combine() which can be Quick-Tested Here.

        <?php

            $array      = array("a 12 34", "b 12345", "c 123456");
            $keys       = array();

            array_walk($array, function(&$data, $key) use (&$keys){
                $keys[] = trim(preg_replace('#(\s.*)#i',   '', $data));;
                $data   = trim(preg_replace('#(^[a-z])#i', '', $data));
            });

            $array = array_combine($keys, $array);

            var_dump($array);;
            // YIELDS::
            array(3) {
                ["a"]=>  string(5) "12 34"
                ["b"]=>  string(5) "12345"
                ["c"]=>  string(6) "123456"
            }

关于php - 拆分数组以创建关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40319627/

相关文章:

php - 试图删除旧的 PHP 版本

php - Codeigniter 替代 header ('Location: ' 。 $_SERVER ['HTTP_REFERER']);

php - PHP 框架中的数据存储

Ruby 检查数组,返回索引,哪些数据存在

javascript - 无法从推送数组中检索对象属性

php - json_encode 将 php 数组传递给 javascript 数组

php - RSS feed 给出错误

php - Symfony 3.3 - 无法使用 EntityType 选择空值

javascript - 使用点分隔符对字符串的数组数量进行排序

java - 按照文件中定义的顺序获取所有 JSON 键