我有一个包含两个字符串值的数组,但是不能使用其中之一。如果我使用
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”键中有一些不可见的字符,所以下一个问题是如何消除它们?
答案 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]));