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

Posted

技术标签:

【中文标题】如何在 While 循环中初始化关联数组?【英文标题】:How to Initialize an Associative Array in a While Loop? 【发布时间】: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 列)作为值?

谢谢。

【问题讨论】:

【参考方案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];

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

【讨论】:

以上是关于如何在 While 循环中初始化关联数组?的主要内容,如果未能解决你的问题,请参考以下文章

Silverstripe - 在模板中循环非关联数组

如何在yaml中制作关联数组列表

如何在 Bash 中迭代关联数组

如何循环访问和访问多维和关联数组中的各种元素? PHP,JSON 或 XML

在 foreach 循环中未设置将数组转换为关联数组

如何在Bash中重命名关联数组?