douwenan9849 2016-07-03 16:33
浏览 50
已采纳

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

I put in file this content:

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

When i read file line by line and spliting line with pattern 'x', to array always adding the extra space in array, so sorting array is not properly. Here code:

$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";
} 

How is looking array:

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

And after sorting:

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

  • 写回答

2条回答 默认 最新

  • duangu6588 2016-07-03 16:37
    关注

    You just need to remove the last element of your array before putting it in your array using the array_pop function :

    PHP

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

    or you can use PHP trim function to remove space at the end of your line :

    PHP

    $array = array();
    $handle = fopen("2.txt", "r");
    if ($handle) {
        while (($line = fgets($handle)) !== false) {
            $line = split('x', trim($line));
            //sort($line);
            print_r($line);
            array_push($array, $line);
        }
        fclose($handle);
    } else {
        echo "File is failed to open";
    } 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?