转换php数组的正确方法
我有像这样的数据数组转换php数组的正确方法,php,arrays,cakephp,file-upload,upload,Php,Arrays,Cakephp,File Upload,Upload,我有像这样的数据数组 $data = [ 'name' => [ (int) 0 => '095a108478345cac184f956b1e8dee91a5a89f87bbabd7b3fb4058f577adf.jpg', (int) 1 => '02059.jpg', (int) 2 => 'avatar.jpg' ], 'type' => [ (int) 0 =&g
$data = [
'name' => [
(int) 0 => '095a108478345cac184f956b1e8dee91a5a89f87bbabd7b3fb4058f577adf.jpg',
(int) 1 => '02059.jpg',
(int) 2 => 'avatar.jpg'
],
'type' => [
(int) 0 => 'image/jpeg',
(int) 1 => 'image/jpeg',
(int) 2 => 'image/jpeg'
],
'tmp_name' => [
(int) 0 => 'C:\xampp\tmp\php17AA.tmp',
(int) 1 => 'C:\xampp\tmp\php17BA.tmp',
(int) 2 => 'C:\xampp\tmp\php17BB.tmp'
],
'error' => [
(int) 0 => (int) 0,
(int) 1 => (int) 0,
(int) 2 => (int) 0
],
'size' => [
(int) 0 => (int) 80542,
(int) 1 => (int) 6532,
(int) 2 => (int) 6879
]
]
我需要像这样转换成数组
$data = [
(int) 0 => [
'name' => '095a108478345cac184f956b1e8dee91a5a89f87bbabd7b3fb4058f577adf.jpg',
'type' => 'image/jpeg',
'tmp_name' => 'C:\xampp\tmp\php17AA.tmp',
'error' => (int) 0,
'size' => (int) 80542
],
(int) 1 => [
'name' => '02059.jpg',
'type' => 'image/jpeg',
'tmp_name' => 'C:\xampp\tmp\php17BA.tmp',
'error' => (int) 0,
'size' => (int) 6532
],
(int) 2 => [
'name' => 'avatar.jpg',
'type' => 'image/jpeg',
'tmp_name' => 'C:\xampp\tmp\php17BB.tmp',
'error' => (int) 0,
'size' => (int) 6879
]
]
我正在寻找将第一个php数组转换为第二个php数组的正确方法。是否为这些操作提供了任何PHP数组函数。通过CakePHP哈希数组管理,两者都是可能的
是的,我可以创建一些foreach循环并创建所需的数组,但我不确定是否有更优雅的方法。从PHP5.5开始,您可以使用并执行此操作
$ret = []; $keys = array_keys($data);
for ($i=0; $i<3; $i++) {
$ret[$i] = array_combine($keys, array_column($data, $i));
}
为了完整起见,这里有一个示例,其中只有两个foreach
:
$ret = [];
foreach($data as $key => $val) {
$i = 0;
foreach ($val as $v) {
$ret[$i][$key] = $v;
$i++;
}
}
顺便说一句,我将使用它,而不考虑其他实现
$ret = [];
foreach($data as $key => $val) {
$i = 0;
foreach ($val as $v) {
$ret[$i][$key] = $v;
$i++;
}
}