如何在 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 循环中初始化关联数组?的主要内容,如果未能解决你的问题,请参考以下文章