Php 是否有一种将关联数组转换为数字数组的最小方法,每个项目都存储键和值?
我只需要在PHP中转换:Php 是否有一种将关联数组转换为数字数组的最小方法,每个项目都存储键和值?,php,associative-array,Php,Associative Array,我只需要在PHP中转换: [ 'id' => '1', 'code' => 'DRX', 'company_name' => 'Dave Ricks Ltd' ], [ 'id' => '2', 'code' => 'LRT', 'company_name' => 'LiveRave Ltd' ] 到 我知道我可以用几个foreach循环来实现这一点,但我想知道使用一些PHPs数组函数是否可以用更少的代码行来
[
'id' => '1',
'code' => 'DRX',
'company_name' => 'Dave Ricks Ltd'
],
[
'id' => '2',
'code' => 'LRT',
'company_name' => 'LiveRave Ltd'
]
到
我知道我可以用几个foreach循环来实现这一点,但我想知道使用一些PHPs数组函数是否可以用更少的代码行来实现这一点?我假设您的初始数组实际上是
[
[
'id' => '1', 'code' => 'DRX', 'company_name' => 'Dave Ricks Ltd'
],
[
'id' => '2', 'code' => 'LRT', 'company_name' => 'LiveRave Ltd'
]
]
因为这是你从数据库里得到的东西。如果我错了,并且您发布了数组的实际var\u 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);
我正在考虑是否有一种方法可以移除内部foreach,但我认为没有一种方法值得这么做。您可以尝试以下方法:
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
)
)
)
)
array\u walk使用array\u与array\u键和array\u值结合使用回调可能会起作用为什么不使用JSON呢?然后可以使用json_编码和json_解码
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
)
)
)
)