加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

转换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++;
    }
}

顺便说一下,无论其他实现如何,我都会使用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读