Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中按字符将数组拆分为关联数组_Php_Arrays_Converters_Key Pair - Fatal编程技术网

如何在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',
  ),
)