PHP - 从字符串创建键值数组

时间:2017-03-10 00:03:57

标签: php arrays

我有一个看起来像这样的字符串:

$string = '1. * key1 * key2 * key3 * $ * value1 * value2 * value3 * $';

我需要把它变成一个键值数组。我不在乎过滤和修剪。已经这样做了。但我无法弄清楚如何获取数组中的键和值。

2 个答案:

答案 0 :(得分:1)

这对你来说够了吗?

$string = '1.  * key1 * key2 * key3 * $    * value1 * value2 * value3 *  $';
$string = str_replace(['1.', ' '], '', $string); // Cleaning unescessary information

$keysAndValues = explode('$', $string);

$keys = array_filter(explode('*', $keysAndValues[0]));
$values = array_filter(explode('*', $keysAndValues[1]));

$keyPairs = array_combine($keys, $values);

var_dump($keyPairs);
  

数组(大小= 3)
  ' KEY1' =>字符串' value1' (长度= 6)
  ' KEY2' =>   字符串' value2' (长度= 6)
  ' KEY3' =>字符串' value3' (长度= 6)

答案 1 :(得分:0)

删除空键和修剪值,以生成有序,可用的数组。

<?php

$string = '1.  * key1 * key2 * key3 * $    * value1 * value2 * value3 *  $';

$parts = explode("$",$string);
$keys = explode("*",substr($parts[0],2));
$values = explode("*",$parts[1]);
$arr = [];

for ($i = 0; $i < count($keys); $i++) {
    if (trim($keys[$i]) !== "") {
        $arr[trim($keys[$i])] = trim($values[$i]);
    }   
}
var_dump($arr);

?>