我只需要在PHP中转换:
[
'id' => '1',
'code' => 'DRX',
'company_name' => 'Dave Ricks Ltd'
],
[
'id' => '2',
'code' => 'LRT',
'company_name' => 'LiveRave Ltd'
]
收件人。。。
[
[
[
'name' => 'id',
'value' => '1',
],
[
'name' => 'code',
'value' => 'DRX',
],
[
'name' => 'company_name',
'value' => 'Dave Ricks Ltd',
]
],
[
[
'name' => 'id',
'value' => '2',
],
[
'name' => 'code',
'value' => 'LRT',
],
[
'name' => 'company_name',
'value' => 'LiveRave Ltd',
]
]
]
我知道我可以用几个foreach循环来完成这项工作,但我想知道使用一些PHPs数组函数,我是否可以用更少的代码行来完成这一任务?
我假设您的初始数组实际上是
[
[
'id' => '1', 'code' => 'DRX', 'company_name' => 'Dave Ricks Ltd'
],
[
'id' => '2', 'code' => 'LRT', 'company_name' => 'LiveRave Ltd'
]
]
因为这是你从数据库中得到的东西。如果我错了,并且您已经发布了数组的实际var_dump/print_r,这很奇怪,但我们可以添加一个步骤来重新组织它。
所以我们需要做的就是
$input = [
[
'id' => '1',
'code' => 'DRX',
'company_name' => 'Dave Ricks Ltd',
],
[
'id' => '2',
'code' => 'LRT',
'company_name' => 'LiveRave Ltd',
]
];
$output = array_map(function($elem) {
return [
['name' => 'id', 'value' => $elem['id'] ],
['name' => 'code', 'value' => $elem['code'] ],
['name' => 'company_name', 'value' => $elem['company_name'] ],
];
}, $input);
print_r($output);
如果你想转换更通用:
$output = array_map(function($elem) {
$result = [];
foreach ($elem as $key => $value) {
$result[] = ['name' => $key, 'value' => $value];
}
return $result;
}, $input);
print_r($output);
我在考虑是否有办法去除内侧前臂,但我认为没有值得付出努力的方法。
你可以试试这个:
while ($array) {
$item = array_shift($array);
$new_entry = array();
foreach ($item as $key => $value) {
$new_item['name'] = $key;
$new_item['value'] = $value;
$new_entry[] = $new_item;
}
$new_array[] = $new_entry;
}
$final_array = array($new_array);
print_r($final_array);
打印:
Array
(
[0] => Array
(
[0] => Array
(
[0] => Array
(
[name] => id
[value] => 1
)
[1] => Array
(
[name] => code
[value] => DRX
)
[2] => Array
(
[name] => company_name
[value] => Dave Ricks Ltd
)
)
[1] => Array
(
[0] => Array
(
[name] => id
[value] => 2
)
[1] => Array
(
[name] => code
[value] => LRT
)
[2] => Array
(
[name] => company_name
[value] => LiveRave Ltd
)
)
)
)