php,在数组中分割额外值之后

时间:2016-07-03 16:33:58

标签: php arrays sorting split

我提交了这个内容:

12x4x11
12x17x20
4x19x30
5x18x10
17x6x18
19x30x20
11x2x17
30x13x19
22x23x7
17x28x2
5x17x30

当我逐行读取文件并使用模式' x'分割行时,数组总是在数组中添加额外的空格,因此排序数组不正确。这里代码:

$array = array();
$handle = fopen("2.txt", "r");
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        $line = split('x', $line);
        //sort($line);
        print_r($line);
        array_push($array, $line);
    }
    fclose($handle);
} else {
    echo "File is failed to open";
} 

如何看阵列:

http://i.stack.imgur.com/OhLzQ.png

排序后:

http://i.stack.imgur.com/4t4V4.png

2 个答案:

答案 0 :(得分:1)

您的问题是新行是您阅读的行的一部分。例如,在这一行

12x4x11

值11实际上是11 / n

/ n是新行char。

解决这个问题很简单,只需在拆分前读取它就行了。这应该删除新行char

喜欢这个

$line = split('x', trim($line));

答案 1 :(得分:0)

您需要先删除数组的最后一个元素,然后再使用array_pop函数将其放入数组中:

<强> PHP

FROM haskell:7.10
VOLUME /app
WORKDIR /app
CMD ["ghci"]

或者您可以使用PHP trim函数删除行尾的空格:

<强> PHP

docker run -it -v /full/path:/app my-test bash