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

8

我现在正在做一件简单的事情,即从一个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个回答

15

首先将其初始化为空:

$languageArray = array();

然后使用单独的while循环来填充它,就像这样:

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

PHP 数组/哈希表没有固定的大小,因此在各种方式下都是可变的,即使您将它们初始为空,您也可以随意以任何方式填充它们。


4

首先创建数组:

$myArray = array();

然后添加键 => 值绑定:

$myArray[$key] = $value;

在您的情况下,这应该是类似以下内容(在循环中):
$myArray[$row[0]] = $row[1];

3

更传统地做:

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

2

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

$languageArray = array();

然后,逐行读取CSV文件,使用每一行将数据放入该数组中:
$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];
}


你不能在数组的初始化代码中声明数组,必须分两步完成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接