【问题标题】:Looking to create an associative array希望创建一个关联数组
【发布时间】:2015-12-04 09:05:36
【问题描述】:

我正在寻找一种在 foreach 循环中从平面数组数据创建关联数组的解决方案:

我所拥有的是一个 csv/xls 文件,它在第一行有标题,在下一行有数据。

第 1 行:标题 第2、3、4、5行:数据

数组看起来:

array(3) {
          [0]=>
          array(7) {
            [0]=>
            string(3) "country"
            [1]=>
            string(7) "state"
            [2]=>
            string(3) "city"
            [3]=>
            string(5) "name"
            [4]=>
            string(4) "address"
            [5]=>
            string(6) "gender"
            [6]=>
            string(6) "status"
          }
          [1]=>
          array(7) {
            [0]=> 
            string(12) "Argentina"
            [1]=>
            string(12) "Corrientes"
            [2]=>
            string(12) "Corrientes"
            [3]=>
            string(12) "Jorge"
            [4]=>
            string(12) "Avenida Avellaneda 12"
            [5]=>
            string(12) "Masculino"
            [6]=>
            string(12) "Activo"
          }
          [2]=>
          array(7) {
            [0]=> 
            string(12) "Argentina"
            [1]=>
            string(12) "Chaco"
            [2]=>
            string(12) "Resistencia"
            [3]=>
            string(12) "Mariano"
            [4]=>
            string(12) "Avenida Peron 12"
            [5]=>
            string(12) "Masculino"
            [6]=>
            string(12) "Activo"
          }
        }

最后我需要得到的结果是:

array(2) {
          [0]=>
          array(7) {
            ['country']=> 
            string(12) "Argentina"
            ['state']=>
            string(12) "Corrientes"
            ['city']=>
            string(12) "Corrientes"
            ['name']=>
            string(12) "Jorge"
            ['address']=>
            string(12) "Avenida Avellaneda 12"
            ['gender']=>
            string(12) "Masculino"
            ['status']=>
            string(12) "Activo"
          }
          [1]=>
          array(7) {
            ['country']=> 
            string(12) "Argentina"
            ['state']=>
            string(12) "Chaco"
            ['city']=>
            string(12) "Resistencia"
            ['name']=>
            string(12) "Mariano"
            ['address']=>
            string(12) "Avenida Peron 12"
            ['gender']=>
            string(12) "Masculino"
            ['status']=>
            string(12) "Activo"
          }
        }

【问题讨论】:

  • 你有没有尝试过?

标签: php arrays


【解决方案1】:
$array = $your_flat_array;

for ($i = 1; $i < count($array); $i++) {

    $new_array[$i-1] = [];

    foreach ($array[$i] as $key => $value) {

        $new_array[$i-1][$array[0][$key]] = $value;
    }
}

print_r($new_array);

【讨论】:

    【解决方案2】:

    从平面数组创建多维数组

    你已经有了一个多维数组,因为你在一个数组中得到了数组。

    在这种特定情况下,您可以将array_splice()array_combine() 结合使用。

    试试这个:

    $oldArray = array(
        array( "country", "state", "city", "name" ),
        array( "Argentina", "Corrientes", "Corrientes", "Jorge" ),
        array( "Argentina", "Chaco", "Resistencia", "Mariano" )
    );
    
    $newArray = array_splice( $oldArray, 1 );
    
    foreach( $newArray as $index => $array ) {
        $newArray[$index] = array_combine( $oldArray[0], $array );
    }
    
    echo "<pre>";
    var_dump( $newArray );
    

    输出:

    array(2) {
      [0]=>
      array(4) {
        ["country"]=>
        string(9) "Argentina"
        ["state"]=>
        string(10) "Corrientes"
        ["city"]=>
        string(10) "Corrientes"
        ["name"]=>
        string(5) "Jorge"
      }
      [1]=>
      array(4) {
        ["country"]=>
        string(9) "Argentina"
        ["state"]=>
        string(5) "Chaco"
        ["city"]=>
        string(11) "Resistencia"
        ["name"]=>
        string(7) "Mariano"
      }
    }
    

    【讨论】:

      【解决方案3】:

      您所要做的就是从数组中删除第一项(标题行):

       array_splice($yourArray, 0, 1);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-16
        • 2012-12-23
        • 1970-01-01
        • 1970-01-01
        • 2013-11-16
        • 1970-01-01
        • 1970-01-01
        • 2014-09-23
        相关资源
        最近更新 更多