Mil*_*len 4 php arrays merge loops
public function getCheckoutForm(){
$arr = array(
'cmd' => '_cart',
'business' => 'some@mail',
'no_shipping' => '1',
'upload' => '1',
'return' => 'url',
'cancel_return' => 'url1',
'no_note' => '1',
'currency_code' => 'url2',
'bn' => 'PP-BuyNowBF');
$cpt=1;
foreach($this->items as $item){
$arr1[] = array(
'item_number_'.$cpt.'' => $item['item_id'],
'item_name_'.$cpt.'' => $item['item_name'],
'quantity_'.$cpt.'' => $item['item_q'],
'amount_'.$cpt.'' => $item['item_price']
);
$cpt++;
}
return array_merge($arr,$arr1[0],$arr1[1]);
}
Run Code Online (Sandbox Code Playgroud)
这将返回这样的数组:
Array
(
[cmd] => _cart
[business] => some@mail
[no_shipping] => 1
[upload] => 1
[return] => url1
[cancel_return] =>url2
[no_note] => 1
[currency_code] => EUR
[bn] => PP-BuyNowBF
[item_number_1] => 28
[item_name_1] => item_name_1
[quantity_1] => 1
[amount_1] => 5
[item_number_2] => 27
[item_name_2] => item_name_2
[quantity_2] => 1
[amount_2] => 30
)
Run Code Online (Sandbox Code Playgroud)
问题是作为回报 $arr1[0] 和 $arr1[1] 是硬编码的。如果在循环中我有 2 个以上的数组,比如说 0,1,2,3 等等,这段代码将不起作用。任何的想法?也许我的逻辑是完全错误的......
无需在循环中创建数组 - 只需将新键直接添加到第一个数组:
public function getCheckoutForm(){
$arr = array(
'cmd' => '_cart',
'business' => 'some@mail',
'no_shipping' => '1',
'upload' => '1',
'return' => 'url',
'cancel_return' => 'url1',
'no_note' => '1',
'currency_code' => 'url2',
'bn' => 'PP-BuyNowBF'
);
$cpt=1;
foreach($this->items as $item){
$arr['item_number_'.$cpt] = $item['item_id'];
$arr['item_name_'.$cpt] = $item['item_name'];
$arr['quantity_'.$cpt] = $item['item_q'];
$arr['amount_'.$cpt] = $item['item_price'];
$cpt++;
}
return $arr;
}
Run Code Online (Sandbox Code Playgroud)