PHP Array_combine未定义索引

PHP Array_combine undefined index

提问人:user1793646 提问时间:11/11/2014 更新时间:11/11/2014 访问量:784

问:

我想将两个数组组合在一起,一个作为键,另一个作为数据。 但是,当我阵列时,我看到键上添加了一个神秘的空间。即使我采用完全不同的数组,空格似乎也会在 .print_rarray_combine

此外,如果我尝试通过在键上添加空格来访问数组元素,我仍然收到错误。Undefined offset: 200

这是我的代码:

$codes = file('H_codes.txt');
$sentences = file('H_sentences.txt');
$H_sentences_combined = array_combine($codes,$sentences);

echo $H_sentences_combined['200'];

我从两个文本文件中检索数组:H_codes.txt

200
201
202
...

并且文件采用相同的格式(即没有内联空格,只有下一行空格)$H_sentences

"Zeer licht ontvlambare aerosol."
"Ontvlambare aerosol."
"Zeer licht ontvlambare vloeistof en damp."
...

这是print_r($H_sentences_combined)

 Array ( [200 ] => "Instabiele ontplofbare stof." [201 ] => "Ontplofbare stof: gevaar voor massa-explosie." [202 ] => "Ontplofbare stof, ernstig gevaar voor scherfwerking." ...)

我真的不知道出了什么问题。

任何帮助都是值得赞赏的! 谢谢。

php 数组索引 偏移量 undefined-index

评论

0赞 danielson317 11/11/2014
读取的文件上的结束行字符可能存在一些问题。确保文件具有适合运行代码的操作系统的结束行字符。如果您在 Windows 中创建文件并在 linux 或 mac 上阅读它,它可能会产生这种类型的效果。
0赞 user1793646 11/11/2014
谢谢,似乎就是这样,但是我怎样才能通过PHP擦除这些空格呢?
0赞 danielson317 11/11/2014
只需使用 php.net/manual/en/function.trim.php 或 Beter,但请查看 BuggaBill 的答案。他有更好的选择。trim()

答:

2赞 Buggabill 11/11/2014 #1

该额外字符是换行符。file 将这些添加到它读入数组的每一行中。

像这样更改文件调用以删除那些额外的新行字符:

$codes = file('H_codes.txt', FILE_IGNORE_NEW_LINES);
$sentences = file('H_sentences.txt', FILE_IGNORE_NEW_LINES);
$H_sentences_combined = array_combine($codes,$sentences);
0赞 Nathan 11/11/2014 #2

索引后面的字符实际上不是空格,而是换行符(或两行)。基本上,在文本文件中,每行末尾都是\n或\r\n。要在插入之前删除这些,只需使用 PHP 中内置的 trim($content) 函数,它将删除字符串左右两侧的所有空格。例如 会回来trim(' hello world! ')'hello world!'