2013-12-18 44 views
0

我有一个现有的阵列(如下图所示)...如何添加关键现有阵列(PHP)

array(15) { 
    [0]=> 
    string(17) "orderid:100000154" 
    [1]=> 
    string(61) "shipping_method:channelunitycustomrate_channelunitycustomrate" 
    [2]=> 
    string(18) "qty_ordered:1.0000" 
    [3]=> 
    string(26) "shipping_firstname:John" 
    [4]=> 
    string(24) "shipping_lastname:Doe" 
    [5]=> 
    string(17) "shipping_company:" 
    [6]=> 
    string(36) "shipping_street1:123 Fake Street" 
    [7]=> 
    string(17) "shipping_street2:" 
    [8]=> 
    string(20) "shipping_city:LAUREL" 
    [9]=> 
    string(28) "shipping_postcode:20723-1042" 
    [10]=> 
    string(24) "shipping_region:Maryland" 
    [11]=> 
    string(19) "shipping_country:US" 
    [12]=> 
    string(21) "vendor_sku:3397001814" 
    [13]=> 
    string(16) "vendor_linecode:" 
    [14]=> 
    string(1) " 
" 
} 

我有这个数组中所期望的按键设置 - 第一个关键价值将是orderid,所以我想orderid => 1000000154

我会怎么做呢?我相信我必须再次爆炸这个阵列,但我不确定写这个阵列的方式,我的任何尝试都没有让我更接近。

谢谢!

+0

环阵列之上,爆炸上':'和分配的键/值对的新数组。 –

回答

2

只需循环并使用explode()设置键和值。使用展开阵列中的第一个项目作为键,第二个项目作为值,然后取消设置现有项目(数字索引的数组元素)进行清理。

$input = array(
    "orderid:100000154", 
    "shipping_method:channelunitycustomrate_channelunitycustomrate", 
    "qty_ordered:1.0000", 
    "shipping_firstname:John", 
    "shipping_lastname:Doe", 
    "shipping_company:", 
    "shipping_street1:123 Fake Street", 
    "shipping_street2:", 
    "shipping_city:LAUREL", 
    "shipping_postcode:20723-1042", 
    "shipping_region:Maryland", 
    "shipping_country:US", 
    "vendor_sku:3397001814", 
    "vendor_linecode:", 
    " 
    " 
); 

foreach($input as $key => $val) { 
    if(strstr($val, ":")) { 
     $exploded = explode(":", $val); 
     $input[$exploded[0]] = $exploded[1]; 
    } 
    unset($input[$key]); 
} 
echo "<pre>"; 
var_dump($input); 
echo "</pre>"; 

输出:

array(14) { 
    ["orderid"]=> 
     string(9) "100000154" 
    ["shipping_method"]=> 
     string(45) "channelunitycustomrate_channelunitycustomrate" 
    ["qty_ordered"]=> 
     string(6) "1.0000" 
    ["shipping_firstname"]=> 
     string(4) "John" 
    ["shipping_lastname"]=> 
     string(3) "Doe" 
    ["shipping_company"]=> 
     string(0) "" 
    ["shipping_street1"]=> 
     string(15) "123 Fake Street" 
    ["shipping_street2"]=> 
     string(0) "" 
    ["shipping_city"]=> 
     string(6) "LAUREL" 
    ["shipping_postcode"]=> 
     string(10) "20723-1042" 
    ["shipping_region"]=> 
     string(8) "Maryland" 
    ["shipping_country"]=> 
     string(2) "US" 
    ["vendor_sku"]=> 
     string(10) "3397001814" 
    ["vendor_linecode"]=> 
     string(0) "" 
} 
0
$result = array(); 
foreach($yourArray as $row) { 
    list($key, $value) = explode(":", $row); 
    $result[$key] = $value; 
}