php - 如何取消嵌套子数组?
问题描述
我有这个数组:
Array
(
[key] => 123456
[siteNumber] => 123456
[useBalanceOnly] => 80
[coupon] => free50
[deliveryAddress.countryId] => IN
[deliveryAddress.state] => GUJ
[deliveryAddress.city] => Ahmedabad
[deliveryAddress.company] => abc
[deliveryAddress.address] => abc
[deliveryAddress.address2] => abc
[deliveryAddress.postcode] => 123
[deliveryAddress.receiver] => 1
[deliveryAddress.telephone] => 123456789
[deliveryAddress.shippingWayId] => 2
[0] => Array
(
[0] => Array
(
[items.1.itemNo] => 51
[items.1.qty] => 8
)
[1] => Array
(
[items.2.itemNo] => 52
[items.2.qty] => 2
)
)
)
我想把它变成这样:
Array
(
[key] => 123456
[siteNumber] => 123456
[useBalanceOnly] => 80
[coupon] => free50
[deliveryAddress.countryId] => IN
[deliveryAddress.state] => GUJ
[deliveryAddress.city] => Ahmedabad
[deliveryAddress.company] => abc
[deliveryAddress.address] => abc
[deliveryAddress.address2] => abc
[deliveryAddress.postcode] => 123
[deliveryAddress.receiver] => 1
[deliveryAddress.telephone] => 123456789
[deliveryAddress.shippingWayId] => 2
[items.1.itemNo] => 51
[items.1.qty] => 8
[items.2.itemNo] => 52
[items.2.qty] => 2
)
这是我到目前为止的代码:
$p = $db->query("select * from table");
$no = 0;
while($row = $p->fetch_array()){
$no = $no +1;
$user_result[] = array(
"items.".$no.".itemNo" => $row['itemno'],
"items.".$no.".qty" => $row['itemqty']
);
}
$parameters = array(
'key' => 123456,
'siteNumber' => '123456',
'useBalanceOnly' => '80',
'coupon' => 'free50',
'deliveryAddress.countryId' => 'IN',
'deliveryAddress.state' => 'GUJ',
'deliveryAddress.city' => 'Ahmedabad',
'deliveryAddress.company' =>'abc',
'deliveryAddress.address' => 'abc',
'deliveryAddress.address2' => 'abc',
'deliveryAddress.postcode' => '123',
'deliveryAddress.receiver' => '1',
'deliveryAddress.telephone' => '123456789',
'deliveryAddress.shippingWayId' => '2',
$user_result
);
print_r($parameters);
解决方案
使用array_merge(),它将结果合并到数组中。(或者干脆使用数组操作符)。您还希望以不同的方式格式化您的$user_result
,因此它创建一个数组,而不是子数组:
$p = $db->query("select * from table");
$no = 0;
$user_result = array();
while($row = $p->fetch_array()){
$no = $no +1;
$user_result["items.".$no.".itemNo"] = $row['itemno'];
$user_result["items.".$no.".qty"] = $row['itemqty'];
}
$parameters = array(
'key' => 123456,
'siteNumber' => '123456',
'useBalanceOnly' => '80',
'coupon' => 'free50',
'deliveryAddress.countryId' => 'IN',
'deliveryAddress.state' => 'GUJ',
'deliveryAddress.city' => 'Ahmedabad',
'deliveryAddress.company' =>'abc',
'deliveryAddress.address' => 'abc',
'deliveryAddress.address2' => 'abc',
'deliveryAddress.postcode' => '123',
'deliveryAddress.receiver' => '1',
'deliveryAddress.telephone' => '123456789',
'deliveryAddress.shippingWayId' => '2',
) + $user_result;
就个人而言,我只是将它堆叠到参数数组的末尾,而不是完全形成 2 个数组:
$parameters = [
'key' => 123456,
'siteNumber' => '123456',
'useBalanceOnly' => '80',
'coupon' => 'free50',
'deliveryAddress.countryId' => 'IN',
'deliveryAddress.state' => 'GUJ',
'deliveryAddress.city' => 'Ahmedabad',
'deliveryAddress.company' => 'abc',
'deliveryAddress.address' => 'abc',
'deliveryAddress.address2' => 'abc',
'deliveryAddress.postcode' => '123',
'deliveryAddress.receiver' => '1',
'deliveryAddress.telephone' => '123456789',
'deliveryAddress.shippingWayId' => '2',
];
$p = $db->query("select * from table");
$no = 0;
while($row = $p->fetch_array()){
$no++; // Or $no += 1; Or $no = $no + 1;
$parameters["items.{$no}.itemNo"] = $row['itemno'];
$parameters["items.{$no}.qty"] = $row['itemqty'];
}
推荐阅读
- r - 在 Windows CMD (powershell) 中使用正则表达式从 XML 中删除 CDATA
- labview - 如何通过 Labview 上的热电偶获取温度
- javascript - 在缩短的链接之前添加 URL 的其余部分
- python - 如何设置热图的 X 轴和 Y 轴范围?
- r - 从数据框名称列表创建数据框列表(用于merge_all)
- python - Python 3 POST 请求处理表单数据
- javascript - $lookup 字段上的 $sum 对象数
- java - 使用 Validate.notNull() 时是否可以更改或包装异常
- shell - 在 shell 中等待事件或用户中止
- r - 具有相互依赖的小部件的闪亮 renderUI