将数组键从数字更改为名称

时间:2014-08-28 11:03:26

标签: php arrays explode

我有一个按行分隔值的字符串,所以我使用了:

 $array = explode("\r\n", $string);

这会将值分开但是它使用键的数字。与字符串分隔的每个值实际上是键,后跟值,即key = value。我想用数值中的=之前的数字替换数组中的数字。所以而不是:

 array (size=2)
     0 => string 'key1=value1' (Lenght=11)
     1 => string 'key2=value2' (Lenght=11)

我想:

 array (size=2)
     key1 => string 'value1' (Lenght=6)
     key2 => string 'value2' (Lenght=6)

2 个答案:

答案 0 :(得分:3)

可能会爆炸你的值并在新的数组中使用它们,就像这样?

$array1 = array(
    'key1=value1', 'key2=value2'
);
$array2 = array();
foreach($array1 as $element) {
    $explodedElement = explode('=', $element);
    $array2[$explodedElement[0]] = $explodedElement[1];
}

编辑:

考虑' ='你的字符串值中的字符,我们应该使用' ='来破坏爆炸值。在爆炸元素的第一个值之后,第一个值将始终是键值,我们假设。你还应该考虑密钥中的空格,这就是我们应该修剪密钥和内爆值的原因。

$array1 = array(
    'url = url.com?id=123456', 'key2=value2'
);
$array2 = array();
foreach($array1 as $element) {
    $explodedElement = explode('=', $element);
    $array2[trim($explodedElement[0])] = trim(implode('=',array_slice($explodedElement, 1)));
}

答案 1 :(得分:0)

爆炸'=',使用相应的键添加此值并删除与此二重奏相对应的上一个条目:

foreach ($array as $key => $arr) {
  $val = explode ('=', $arr);
  $array[$val[0]] = $val[1]; // Add key1 => string 'value1' (Lenght=6)
  unset ($array[$key]); // Remove 0 => string 'key1=value1' (Lenght=11)
}

如果要创建新阵列并明显保留上一个阵列,请跳过未设置的部分