从PHP 7.1中的关联数组读取值的奇怪问题

时间:2018-03-09 14:43:14

标签: php arrays csv

我在基本脚本中看到一些(应该是简单的)PHP代码的奇怪问题。

我有一个多维关联数组$ accounts,在使用var_dump时看起来像这样:

    Array(4) {
      [0] =>
      array(3) {
        'account' =>
        string(37) "Flood Cleanup City - Desktop - Exact "
        'parameter' =>
        string(23) "flood_cleanup_city_d_em"
        'phone' =>
        string(0) ""
      }
      [1] =>
      array(3) {
        'account' =>
        string(51) "Flood Cleanup City - Desktop - Exact Call Extension"
        'parameter' =>
        string(3) "N/A"
        'phone' =>
        string(0) ""
      }
      [2] =>
      array(3) {
        'account' =>
        string(38) "Flood Cleanup City - Desktop - Phrase "
        'parameter' =>
        string(23) "flood_cleanup_city_d_pm"
        'phone' =>
        string(0) ""
      }
      [3] =>
      array(3) {
        'account' =>
        string(52) "Flood Cleanup City - Desktop - Phrase Call Extension"
        'parameter' =>
        string(3) "N/A"
        'phone' =>
        string(0) ""}
}

所以,直截了当。此数组在函数中生成,并作为返回值传递给变量$ listAccounts。

我只想迭代$ listAccounts并提取'帐户'价值,所以我写了这个:

foreach($listAccount as $account)
{
    $accountName = $account['account'];
    echo $accountName;
}

我希望它会输出四个帐户字符串。相反,$ account [' account']返回NULL。但是,如果我使用array_keys函数从数组中提取键的名称并使用此代码,它可以正常工作:

$accountName = $account[array_keys($account)[0]];

如果它可能是相关的,生成多维数组的函数使用fgetcsv()函数来解析CSV文件:

function getAccounts()
{
    $handle = fopen("water.csv","r");
    $header = NULL;
    $accounts = array();
    $n = 0;
    while (!feof($handle)) {
        $account = fgetcsv($handle);
        if(!$header)
        {
            $header = $account;
        }
        else
        {
            $accounts[] = array_combine($header,$account);
        }
    }
    fclose($handle);
    echo var_dump($accounts);
    return $accounts;
}

1 个答案:

答案 0 :(得分:1)

你在"帐户中有一个奇怪的第一个隐形符号"关键名称。请在解析CSV文件后过滤数据。