无法在PHP中使用数组中的字符串值

时间:2019-03-04 16:48:01

标签: php arrays

我有一个包含两个字符串值的数组,但是不能使用其中之一。如果我使用

var_dump($array[0]);

结果是

 array(2) { ["id"]=> string(2) "01" ["name"]=> string(10) "Aquamarine" }

但是

var_dump($array[0]["id"]);

显示NULL。

我尝试将“ id”更改为其他,尝试使用'代替“,同样的效果,strlen($ array [0] [” id“])也返回0。第二个(” name“ “)正常工作。

更新: 数组用以下代码初始化:

$handle = @fopen("stones.csv", "r");
if ($handle) {
    while (($row = fgetcsv($handle, 4096, ';')) !== false) {
        if (empty($fields)) {
            $fields = $row;
            continue;
        }
        foreach ($row as $k=>$value) {
            $array[$i][$fields[$k]] = $value;
        }
        $i++;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}
var_dump($array[0]);
var_dump($array[0]["id"]);
var_dump(array_keys($array[0]));

因此转储之间没有任何修改,最后三行返回此

array(2) { ["id"]=> string(2) "01" ["name"]=> string(10) "Aquamarine" } NULL array(2) { [0]=> string(5) "id" [1]=> string(4) "name" }

现在我看到“ id”键中有一些不可见的字符,所以下一个问题是如何消除它们?

1 个答案:

答案 0 :(得分:0)

使用内置的“修剪”功能修剪键。参考:http://php.net/manual/en/function.trim.php

$handle = @fopen("stones.csv", "r");
if ($handle) {
    while (($row = fgetcsv($handle, 4096, ';')) !== false) {
        if (empty($fields)) {
            $fields = $row;
            continue;
        }
        foreach ($row as $k=>$value) {
            $array[$i][trim($fields[$k])] = $value;
        }
        $i++;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}
var_dump($array[0]);
var_dump($array[0]["id"]);
var_dump(array_keys($array[0]));