从值重命名数组

时间:2013-11-06 14:22:19

标签: php arrays

我有一个字符串,说是

ID=14,123@@ID=15,789@@

我用

爆炸了
$pieces = explode("@@", $contents);

所以现在我有一组数组

array(3) 
{ 
[0]=> string(69) "ID=14,123" 
[1]=> string(9) "ID=15,789" 
[2]=> string(0) "" 
}

然后我想再次爆炸数组中的字符串并使用此

foreach ($pieces as $key => $value){
     $pieces[$key] = strpos( $value, "," ) ?
                explode( ",", $value ) :
                $value; 

     }

现在我有一个更嵌套的

array(3) 
{ 
[0]=> array(2) 
   { 
   [0]=> string(5) "ID=14" 
   [1]=> string(3) "123" 
   } 
[1]=> array(2) 
   { 
   [0]=> string(5) "ID=15" 
   [1]=> string(3) "789" 
   } 
[2]=> string(0) 
   "" 
}

但我想要的是“ID”这个词可以替换成数组的键,所以它变成了

array 
{ 
[ID=14]=> "123" 
[ID=15]=> "789" 
}

怎么办?我对数组非常不熟悉但很想学习。

2 个答案:

答案 0 :(得分:1)

您不能拥有相同的索引。如果你的意思是数组中的索引,这将做的事情:

$string = 'ID,123@@ID,789@@';

$result = array_map(function($item)
{
   $temp = explode(',', $item);
   return count($temp)==2?[$temp[0] => $temp[1]]:$temp;
},explode('@@', $string));

//var_dump($result);

答案 1 :(得分:1)

$contents = 'ID,123@@ID,789@@';
$pieces = explode("@@", $contents);

$parsed = array();
foreach ($pieces as $key => $value){
   $parsed[] = explode(',', $value);
}

$master = array();
foreach ($parsed as $ar) {
        $master[][$ar[0]] = $ar[1];
}
print_r($master);