如何在PHP中按字符将数组拆分为关联数组
我已经构建了一个程序,该程序从一个充满字符串的数组中获取数据,并将数据转换成一个适当格式的数组。这是原始阵列:如何在PHP中按字符将数组拆分为关联数组,php,arrays,converters,key-pair,Php,Arrays,Converters,Key Pair,我已经构建了一个程序,该程序从一个充满字符串的数组中获取数据,并将数据转换成一个适当格式的数组。这是原始阵列: $arr = array( "action: Added; quantity: 1; item_code: RNA1; product_name: Mens Organic T-shirt; colour: White; size: XL", "action: Subtracted; quantity: 7; item_code: RNC1
$arr = array(
"action: Added; quantity: 1; item_code: RNA1; product_name: Mens Organic T-shirt; colour: White; size: XL",
"action: Subtracted; quantity: 7; item_code: RNC1; product_name: Kids Basic T-shirt; colour: Denim Blue; size: 3-4y",
"action: Added; quantity: 20; item_code: RNV1; product_name: Gift Voucher; style: Mens; value: £20",
);
这是一个新的数组,数据格式正确
Array
(
[0] => Array
(
[0] => action: Added
[1] => quantity: 1
[2] => item_code: RNA1
[3] => product_name: Mens Organic T-shirt
[4] => colour: White
[5] => size: XL
)
[1] => Array
(
[6] => action: Subtracted
[7] => quantity: 7
[8] => item_code: RNC1
[9] => product_name: Kids Basic T-shirt
[10] => colour: Denim Blue
[11] => size: 3-4y
)
[2] => Array
(
[12] => action: Added
[13] => quantity: 20
[14] => item_code: RNV1
[15] => product_name: Gift Voucher
[16] => style: Mens
[17] => value: £20
)
)
在这里,我认为应该将数组更改为关联的键值对数组,并认为如果我能够找到一种方法,通过将数组拆分为一个字符(在本例中为“:”来将数组转换为所述关联数组,则会相对简单
最后,我希望数组看起来像:
'action' => '',
'quantity' => '',
'item_code' => '',
'product_name' => '',
……等等
我曾经尝试过使用array_列和array_combine函数,但在我对PHP相对陌生的地方,运气不太好。
非常感谢您的帮助 您可以在搜索替换后使用parse_str
<?php
$arr = array(
"action: Added; quantity: 1; item_code: RNA1; product_name: Mens Organic T-shirt; colour: White; size: XL",
"action: Subtracted; quantity: 7; item_code: RNC1; product_name: Kids Basic T-shirt; colour: Denim Blue; size: 3-4y",
"action: Added; quantity: 20; item_code: RNV1; product_name: Gift Voucher; style: Mens; value: £20",
);
$arr = array_map(function($v) {
parse_str(str_replace([': ', '; '], ['=', '&'], $v), $result);
return $result;
}, $arr);
var_export($arr);
将
explode()
与一起使用代码>分隔符以获取字段。在字段上循环并使用explode()
和:
分隔符来获取关键字和值。实际上非常简单:如果任何值包含=
或&
,这将不起作用。
array (
0 =>
array (
'action' => 'Added',
'quantity' => '1',
'item_code' => 'RNA1',
'product_name' => 'Mens Organic T-shirt',
'colour' => 'White',
'size' => 'XL',
),
1 =>
array (
'action' => 'Subtracted',
'quantity' => '7',
'item_code' => 'RNC1',
'product_name' => 'Kids Basic T-shirt',
'colour' => 'Denim Blue',
'size' => '3-4y',
),
2 =>
array (
'action' => 'Added',
'quantity' => '20',
'item_code' => 'RNV1',
'product_name' => 'Gift Voucher',
'style' => 'Mens',
'value' => '£20',
),
)