首页 > 解决方案 > 将多面额数组处理为数组索引作为数组

问题描述

我在 php 中有多维数组,这是数组格式,我需要在循环中处理这些数据,并希望每个数组值都带有它的索引。

Array
(
    [name] => Array
        (
            [0] => third.png
            [1] => second.png
            [2] => first.png
        )

    [type] => Array
        (
            [0] => image/png
            [1] => image/png
            [2] => image/png
        )

    [tmp_name] => Array
        (
            [0] => /opt/lampp/temp/phpOPmQcB
            [1] => /opt/lampp/temp/phpk0j1yp
            [2] => /opt/lampp/temp/phpS2mhVd
        )

    [error] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
        )

    [size] => Array
        (
            [0] => 179440
            [1] => 102238
            [2] => 75915
        )

)

我想用新索引处理多维数组,例如核心 php 中的这个多维数组,请帮帮我

array(
    Array
   (
    [name] => third.png
    [type] => image/png
    [tmp_name] => /opt/lampp/temp/phpOPmQcB
    [error] => 0
    [size] => 179440
   )
    Array
  (
    [name] => second.png
    [type] => image/png
    [tmp_name] =>/opt/lampp/temp/phpk0j1yp
    [error] => 0
    [size] => 102238
  )
    Array
  (
    [name] => first.png
    [type] => image/png
    [tmp_name] => /opt/lampp/temp/phpS2mhVd
    [error] => 0
    [size] => 75915
  )
)

标签: phpmultidimensional-arrayassociative-array

解决方案


您可以使用 array_keys 获取数组的键。
然后,您需要循环其中一个子数组的计数。$keys我使用变量 从第一个子数组中获取计数。

我嵌套了一个 for 和一个 foreach 来构建您期望的数组。
此方法是动态的,并且适用于更大的输入数组,包括子数组的数量和项目的数量。

$keys = array_keys($arr);
$count = count($arr[$keys[0]]);

for($i = 0; $i<$count; $i++){
    foreach($keys as $val){
        $new[$i][$val] = $arr[$val][$i];
    }
}

var_dump($new);

输出:

array(3) {
      [0]=>
      array(5) {
            ["name"] => "third.png"
            ["type"] => "image/png"
            ["tmp_name"] => "/opt/lampp/temp/phpOPmQcB"
            ["error"] => 0 
            ["size"] => 179440
      }
      [1]=>
      array(5) {
            ["name"] => "second.png"
            ["type"] => "image/png"
            ["tmp_name"] => "/opt/lampp/temp/phpk0j1yp"
            ["error"] => 0
            ["size"] => 102238
      }
      [2]=>
      array(5) {
            ["name"] => "first.png"
            ["type"] => "image/png"
            ["tmp_name"] => "/opt/lampp/temp/phpS2mhVd"
            ["error"] => 0
            ["size"] => 75915
      }
}

https://3v4l.org/4g40N


推荐阅读