使用来自简单索引字符串数组的键创建关联数组

时间:2017-06-29 16:58:57

标签: php

我有一个格式为key: value的字符串数组,如下所示:

Array
    (
         [0] => label: productlabel
         [1] => timezone: SDT
         [2] => price: 0.2225
         [3] => reserve: 60
    )

我需要创建一个关联数组,关键部分作为数组元素索引,值部分作为数组元素值,如下所示:

Array
    (
        [label] => productlabel
        [timezone] => SDT
        [price] => 0.22255
        [reserve] => 60
    )

是否有更短的方法或功能来创建它,或者我需要使用基本控制结构手动制作它?

4 个答案:

答案 0 :(得分:1)

Map the array splitting :上的值,然后使用array_column()分配该分组中的值和键:

$originalArray = [
    'label: productlabel',
    'timezone: SDT',
    'price: 0.2225',
    'reserve: 60',
];

$newArray = array_column(
    array_map(
        function($value) {
            return explode(': ',$value);
        },
        $originalArray
    ),
    1,
    0
);

var_dump($newArray);

答案 1 :(得分:1)

根据:拆分每个,然后添加到新数组

foreach($array as $value){   // loop the original array
  $split = explode(":",$value);  // split values based on : into 2 element array
  $array2[$split[0]] = $split[1];  // add to the new array, [key] = [value]
}

答案 2 :(得分:1)

您可以创建一个新数组并拆分为':'设置$ key和$ value之后。

$oldArray = [
    'label: productlabel',
    'timezone: SDT',
    'price: 0.2225',
    'reserve: 60',
];

$newArray = [];

foreach($oldArray as $pos) {
    list($key, $value) = explode(':', $pos);
    $newArray[$key] = $value;
}

答案 3 :(得分:1)

如果您将:转换为=,字符串就像.ini行,所以你可以这样对待它。

$assoc = parse_ini_string(str_replace(': ', '= ', join("\n", $array)));