为什么我的foreach循环返回额外的索引位置?

时间:2018-09-20 00:39:30

标签: php

我正在从.txt中提取文本,我将其展开然后重新展开,以便可以将其存储为数组。当我在第二次爆炸后使用print_r时,它输出一个带有第四个索引位置的数组,而该数组应该只有0 1 23。为什么有什么想法? 感谢您的任何帮助,谢谢。

PHP

 list($title, $author, $publisher, $isbn) = explode('*', $line);

    print_r($line); //outputs a string


    $books = explode('*', $line);
    echo "<br>";
    print_r($books); //outputs array with extra index position.

输出样本

Array ( [0] => Business 101 [1] => John Smith[2] => 2002-07-18 [3] => 1-444-2589-x [4] => )

.txt文件中的行示例

Business 101*John Smith*2002-07-18*1-444-2589-x*

1 个答案:

答案 0 :(得分:1)

请分享 $ line 的内容,以便我们为您提供帮助。

我想只是一种解释:$ line具有您期望的更多值。

如果您从文件(例如CSV文件)中导入数据,这是全面的。

因此,请检查是否存在以下内容:

BookName*Author*PublishDate*ISBN*

您看到最后一个*吗?这是问题。

爆炸函数读取最后一个*,并在数组中创建另一个字段。

如果要解决此问题,可以删除最后一个*,或仅对爆炸函数传递一个限制(3是数字,请尝试)。

array explode(string $delimiter, string $string, int $limit);

希望它对您有帮助。

最诚挚的问候。