如何在While循环中初始化关联数组?

时间:2011-03-10 18:48:36

标签: php arrays while-loop associative-array

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

我目前的做法是这样的:

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

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

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

感谢。

4 个答案:

答案 0 :(得分:10)

首先将其初始化为空:

$languageArray = array();

然后使用单独的while循环填充它:

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

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

答案 1 :(得分:3)

更常规地做:

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

答案 2 :(得分:2)

首先创建数组:

$myArray = array();

然后添加一个键=>价值约束:

$myArray[$key] = $value;

在你的情况下,这应该是(在循环中):

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

答案 3 :(得分:2)

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

$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];
}


你不能使用初始化中的代码来声明一个数组:你必须分两步完成。