php - 无法在 PHP 中使用数组中的字符串值
问题描述
我有一个包含两个字符串值的数组,但不能使用其中一个。如果我使用
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”键中有一些不可见的字符,那么接下来的问题是如何摆脱它们?
解决方案
使用内置的“修剪”功能修剪钥匙。参考: 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]));
推荐阅读
- qt - 如何将定义列表加载到 QML 中?
- python - 读取 SAS 文件以获取元信息
- c# - 在 IIS 中未找到返回 404 的 MVC 控制器操作上调用 Get
- android - 注释处理器现在必须显式声明。- 黄油刀7.0.1.jar(黄油刀7.0.1.jar)
- java - 如何使用 java 10 的应用程序类数据共享功能?
- python - 在迁移文件中正确声明空的 Django PostgreSQL JSONField 默认值
- git - 如何以编程方式编辑旧的 git 提交消息?
- python - Flask-socketio - 未能设置“Access-Control-Allow-Origin”响应标头
- linux - 调用 mmap() 后 MAP_PRIVATE 如何处理对基础文件的更改
- ruby-on-rails - 无法使用 Devise 从 Rails 应用程序发送电子邮件