如何在PHP中将数组转换为键值对
这里,我有一个数组如何在PHP中将数组转换为键值对,php,arrays,string,key-value,Php,Arrays,String,Key Value,这里,我有一个数组 $arr = array( "action: Added; amount: 1; code: RNA1; name: Mens Organic T-shirt; colour: White; size: XL", "action: Subtracted; amount: 7; code: RNC1; name: Kids Basic T-shirt; colour: Denim Blue; size: 3-4y", &
$arr = array(
"action: Added; amount: 1; code: RNA1; name: Mens Organic T-shirt; colour: White; size: XL",
"action: Subtracted; amount: 7; code: RNC1; name: Kids Basic T-shirt; colour: Denim Blue; size: 3-4y",
"action: Added; amount: 20; code: RNV1; name: Gift Voucher; style: Mens; value: £20",
我已采取一些步骤尝试通过执行以下操作将此数组转换为密钥对数组:
// Split the array into strings.
$imploded = implode(" ",$arr);
//echo $imploded;
// Seperate the strings by the ";" character.
$exploded = explode("; ",$imploded);
//print_r($exploded);
// The elements are now in an array.
// Here I need to separate them into key value pairs.
我使用$explode函数将$inbode字符串按“;”字符分割,以使数据更易于处理。这是打印$exploded数组的结果:
Array ( [0] => action: Added [1] => quantity: 1 [2] => item_code: RNA1 [3] => product_name: Mens Organic T-shirt [4] => colour: White [5] => size: XL action: Subtracted [6] => quantity: 7 [7] => item_code: RNC1 [8] => product_name: Kids Basic T-shirt [9] => colour: Denim Blue [10] => size: 3-4y action: Added [11] => quantity: 20 [12] => item_code: RNV1 [13] => product_name: Gift Voucher [14] => style: Mens [15] => value: £20 )
我尝试过使用array_combine函数进行实验,但是我认为它不起作用,因为键和对在相同的元素中
$result = array(
array_combine($exploded[0], $exploded[1]));
//print_r($result);
我可能会尝试使用“:”字符拆分元素,但我不确定如何执行此操作。我对PHP也很陌生,所以我希望能有一些简单的代码和解释:)
编辑:我希望生成的数组看起来像这样
'action' => '',
'quantity' => '',
'item_code' => '',
'product_name' => '',
'colour' => '',
'size' => '',
这是你需要的吗
<?php
$arr = array(
"action: Added; amount: 1; code: RNA1; name: Mens Organic T-shirt; colour: White; size: XL",
"action: Subtracted; amount: 7; code: RNC1; name: Kids Basic T-shirt; colour: Denim Blue; size: 3-4y",
"action: Added; amount: 20; code: RNV1; name: Gift Voucher; style: Mens; value: £20",
);
foreach ($arr as $string) {
//Build array
preg_match_all("/ [ ]?([^:]+): ([^;]+)[ ;]? /x", $string, $p);
$array = array_combine($p[1], $p[2]);
//Print it or do something else with it
print_r($array);
}
使用
$keyValue=array();
$len=计数($array);
对于($i=1;$i生成的数组应该是什么样子的?这与您上一个问题非常相似,您似乎已经接受了答案。您接受的答案有问题吗?很抱歉,我重新发布了,因为我希望您能解释一下代码的功能,就像我对自己代码的注释一样。Expla国家到底是什么?这不是同一个答案吗?是的,只是标记为重复,不是被接受的答案在那里,也许op对被接受的答案有问题,只是重新发布了这个问题
$keyValue = array();
$len = count($array);
for($i=1; $i<$len; $i++) {
$keyValue[] = array_combine($array[0], $array[$i]);
}