2017-06-29 48 views
0

我有一個字符串數組與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 
    ) 

有一個較短的方式或創建這樣的功能,或者我需要用基本控制結構進行手動呢?

+0

你如何用冒號分隔的值創建初始數組,最容易在其源代碼中進行更改?否則,你將不得不使用正則表達式或爆炸來分隔你的值。 – ctwheels

+0

@ctwheels不幸的是,這是我從Google電子表格中接收數據的方式。因此,在這種情況下,來源的更改不是一種選擇。 – neptune

回答

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] 
} 
+0

接受此,因爲它適用於php版本<= 5.4 – neptune

+0

@neptune它不是唯一的。 – Cava

1

Map the arraysplitting:然後將該值使用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

您可以在設置$ 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; 
} 
1

如果轉換:=,琴絃都喜歡的.ini線,所以你可以這樣對待它。

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