转换php数组的正确方法
发布时间:2020-12-13 16:58:15 所属栏目:PHP教程 来源:网络整理
导读:我有像数据一样的数据 $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 = 'imag
我有像数据一样的数据
$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:xampptmpphp17AA.tmp',(int) 1 => 'C:xampptmpphp17BA.tmp',(int) 2 => 'C:xampptmpphp17BB.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:xampptmpphp17AA.tmp','error' => (int) 0,'size' => (int) 80542 ],(int) 1 => [ 'name' => '02059.jpg','tmp_name' => 'C:xampptmpphp17BA.tmp','size' => (int) 6532 ],(int) 2 => [ 'name' => 'avatar.jpg','tmp_name' => 'C:xampptmpphp17BB.tmp','size' => (int) 6879 ] ] 我正在寻找将第一个php数组转换为第二个的正确方法.是否为这些操作提供了任何PHP数组函数. CakePHP哈希阵列管理是否可行? 是的,我可以制作一些foreach循环并创建一个我需要的数组,但我不确定是否有更优雅的方式. 解决方法
从PHP 5.5开始,您可以使用
array_column和
array_combine来完成它.
$ret = []; $keys = array_keys($data); for ($i=0; $i<3; $i++) { $ret[$i] = array_combine($keys,array_column($data,$i)); } 其中3是name,type,tmp_name等元素的数量. Demo. 对于PHP<同样的事情5.5 $ret = []; $keys = array_keys($data); for ($i=0; $i<3; $i++) { $ret[$i] = array_combine($keys,array_map(function($element) use ($i){ return $element[$i]; },$data)); } Demo. 这里有一个例子,为了完整起见,只有两个foreach: $ret = []; foreach($data as $key => $val) { $i = 0; foreach ($val as $v) { $ret[$i][$key] = $v; $i++; } } 顺便说一下,无论其他实现如何,我都会使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |