为什么上一个数组列看起来像这样?

时间:2017-02-26 00:04:02

标签: php arrays file

使用包含此内容的文件:

1 2 3 4 5 0
6 7 8 9 10 0
11 12 13 14 15 1
16 17 18 19 20 1

我尝试使用此代码创建2d数组并获取最后一列:

<?php

$tab = array();
$lastColumn=array();
$file = file('test.txt');
foreach ($file as $item) {
    array_push($tab, explode(' ', $item));
};

foreach ($tab as $item) {
    array_push($lastColumn,end($item));
};
var_dump($lastColumn);

但最后一个看起来像这样:

array(4) { [0]=> string(3) "0 " [1]=> string(3) "0 " [2]=> string(3) "1 " [3]=> string(1) "1" } 

除了最后一个(字符串(1),后面没有空格)之后,所有值都有字符串(3)和空格

我需要最后一列中没有空格和字符串(1)的所有值。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

\n代表的文件中有换行符需要删除。

尝试更改:

foreach ($file as $item) {
    array_push($tab, explode(' ', $item));
};

类似于:

foreach ($file as $item) {
    array_push($tab, explode(' ', str_replace('\n','',$item)));
};

答案 1 :(得分:0)

您编写的所有内容在编程中通常称为whitespace。也就是说,字符串中存在的字符与字符的方式不可见。

PHP有一个内置函数来处理这个名为trim()的函数,其中包含所有这些字符:

  

此函数返回一个字符串,其中删除了空格   str的开头和结尾如果没有第二个参数,trim()将会   剥去这些字符:

     

“”(ASCII 32(0x20)),一个普通的空格。

     

“\ t”(ASCII 9(0x09)),一个标签。

     

“\ n”(ASCII 10(0x0A)),新行(换行符)。

     

“\ r”(ASCII 13   (0x0D)),回车。

     

“\ 0”(ASCII 0(0x00)),NUL字节。   “\ x0B”(ASCII 11(0x0B)),垂直制表符。

所以

foreach ($tab as $item) {
    array_push($lastColumn,end($item));
};

变为:

foreach ($tab as $item) {
    array_push($lastColumn,end(trim($item)));
};