【问题标题】:How to Initialize an Associative Array in a While Loop?如何在 While 循环中初始化关联数组?
【发布时间】:2011-07-12 23:10:56
【问题描述】:

我现在正在做一件简单的事情,我要从 CSV 文件中读取,A 列包含诸如“EN”之类的代码,B 列包含特定名称“English”..等,我想阅读将它们放入关联数组中。

我现在的做法是这样的:

  $handle = fopen("Languages.csv","r") or die("EPIC FAIL!");

  $languageArray = array(
  while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) 
  {
              $row[0] => $row[1],
  }
  )

但它实际上抱怨我的语法,所以我只是想知道是否有办法通过获取我的 csv 文件的所有行来初始化我的关联数组,并将第一个字符串(来自 A 列)作为键,第二个字符串(来自 B 列)作为值?

谢谢。

【问题讨论】:

    标签: php arrays while-loop associative-array


    【解决方案1】:

    先初始化为空:

    $languageArray = array();
    

    然后使用单独的 while 循环填充它,如下所示:

    while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) 
    {
        $languageArray[$row[0]] = $row[1];
    }
    

    PHP 数组/哈希没有固定的大小,因此可以通过各种方式进行更改,因此即使您将它们初始化为空,您也可以稍后根据需要填充它们。

    【讨论】:

      【解决方案2】:

      首先创建数组:

      $myArray = array();
      

      然后添加一个key => value绑定:

      $myArray[$key] = $value;
      

      在您的情况下,这应该类似于(在循环中):

      $myArray[$row[0]] = $row[1];
      

      【讨论】:

        【解决方案3】:

        按惯例做:

        $languageArray = array();
        while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) 
        {
                  $languageArray[$row[0]] = $row[1];
        }
        

        【讨论】:

          【解决方案4】:

          首先初始化一个空数组怎么样,稍后将填充您的数据:

          $languageArray = array();
          

          然后,逐行浏览 CVS 文件,使用每一行将数据放入该数组:

          $handle = fopen("Languages.csv","r") or die("EPIC FAIL!");
          while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
              // $row[0] is the first column,
              // $row[1] is the second one.
              $languageArray[$row[0]] = $row[1];
          }
          


          你不能声明一个数组,在它的初始化中使用代码:你必须分两步行动。

          【讨论】: