我有一个字符串
pid1+2+price1+20+qty1+2+pid2+3+price2+20+qty2+1+
这是一些处理的结果...... 我需要创建应该像
的数组pid1->2
price1->20
qty1->2(first array)
pid2->2
price2->20
qty2->2(Second array)
我尝试使用爆炸,但什么都没有实现...... 感谢
上面的字符串已由代码
创建$a = var_export($_REQUEST);
foreach ($_REQUEST as $key=>$value)
{
$a = $key . "+" . $value . "+";
echo $a;
}
答案 0 :(得分:3)
试试这个:
$str = "pid1+2+price1+20+qty1+2+pid2+3+price2+20+qty2+1+";
preg_match_all('/(?P<var>\w+)\+(?P<digit>\d+)/',$str,$macth);
$res = array_chunk(array_combine($macth['var'],$macth['digit']),3,TRUE);
echo "<pre>";
print_r($res);
输出:
Array
(
[0] => Array
(
[pid1] => 2
[price1] => 20
[qty1] => 2
)
[1] => Array
(
[pid2] => 3
[price2] => 20
[qty2] => 1
)
)
答案 1 :(得分:1)
如果您可以更改创建$ a的方式,请执行:
foreach($_REQUEST as $key=>$value)
$a[$key]=$value;
如果您必须按照$a
的方式工作,请执行以下操作:
$a = explode('+',$a);
$max = count($a);
for ($i = 0; $i < $max; $i += 2)
$b[$a[$i]] = $a[$i+1];
var_dump($b);
答案 2 :(得分:1)
$string = "pid1+2+price1+20+qty1+2+pid2+3+price2+20+qty2+1+";
$parts = explode ('+' , $string);
$data = array();
$c = 0;
for ($i = 0; $i < sizeof($parts); $i++) {
$data[$c][$parts[$i]] = $parts[++$i];
$data[$c][$parts[++$i]] = $parts[++$i];
$data[$c][$parts[++$i]] = $parts[++$i];
$c++;
}
echo '<pre>';
var_dump($data);
echo '</pre>';
可以这样做。
输出是: //使用rtrim($ string,'+')来避免最后一个空数组
array(3) {
[0]=>
array(3) {
["pid1"]=>
string(1) "2"
["price1"]=>
string(2) "20"
["qty1"]=>
string(1) "2"
}
[1]=>
array(3) {
["pid2"]=>
string(1) "3"
["price2"]=>
string(2) "20"
["qty2"]=>
string(1) "1"
}
[2]=>
array(1) {
[""]=>
NULL
}
}
答案 3 :(得分:1)
所以这是我的解决方案:您可以使用explode按+
字符拆分字符串,然后替换每个值作为新数组的键和值。
$str = 'pid1+2+price1+20+qty1+2+pid2+3+price2+20+qty2+1+';
$split = explode("+",$str);
$final = array();
$lastKey = '';
foreach ($split as $index => $value) {
if ($value){ // don't store empty values
if ($index % 2 == 0){ // this is the alternation (odd/even index)
$lastKey = $value; // save the key for the next value
$final[$value] = ''; // initialize the element for the next value
}else{
$final[$lastKey] = $value; // set the value for the previous key
}
}
}
答案 4 :(得分:1)
你可以试试这个
<?php
//$_REQUEST Array is here termed as $reqArr
$reqArr['pid1'] = '2';
$reqArr['price1'] = '20';
$reqArr['qty1'] = '1';
$reqArr['pid2'] = '3';
$reqArr['price2'] = '40';
$reqArr['qty2'] = '2';
$loopCount = sizeof($reqArr)/3; // 3 is the count of items per array (ie pid, price & qty here)
for($i = 1; $i <= $loopCount; $i++) {
$finalArr[$i]['pid'.$i] = $reqArr['pid'.$i];
$finalArr[$i]['price'.$i] = $reqArr['price'.$i];
$finalArr[$i]['qty'.$i] = $reqArr['qty'.$i];
}
echo '<pre>';
print_r($finalArr);
?>
结果将是
Array
(
[1] => Array
(
[pid1] => 2
[price1] => 20
[qty1] => 1
)
[2] => Array
(
[pid2] => 3
[price2] => 40
[qty2] => 2
)
)