PHP 移动数组项显示正确的数组但写入错误?

PHP Moving Array Item Shows Correct Array but Writes Wrong?

有一个代码可以将数组的元素向上移动一位 space。
URL 加载: action?p=ArrayNumber

if (isset($_GET['p'])) {
    $index = $_GET['p'];
    $panel_dir = 'host.txt';
    $panel_data = file($panel_dir);

    $pos = $panel_data[$index];
    $panel_data[$index] = $panel_data[$index-1];
    $panel_data[$index-1] = $pos;

    $f_panel = fopen($panel_dir, "w+");
    foreach($panel_data as $panel_line) {
        fwrite($f_panel, $panel_line);
    }
    fclose($f_panel);  
}

内容如何开始:

Array ( [0] => Name [1] => List [2] => Folder [3] => Host )

当print_r($panel_data);它正确显示的数组:

Array ( [0] => Name [1] => List [2] => Host [3] => Folder )

回声内爆时($panel_data);数组合并移动的元素:

Name List HostFolder

Bcz of this(?!),似乎是将它们组合起来而不是换行。它确实按照愿望移动了它,但是..不知道组合是从哪里来的。

Name  
List  
HostFolder

使用 implode("\n", $array); 将行写入您的文件。

这是工作示例:

    $array = [
        'Name',
        'List',
        'Folder',
        'Host'
    ];
    $host = $array[3];
    $array[3] = $array[3-1];
    $array[3-1] = $host;
    echo implode("\n", $array);

结果:

Name
List
Host
Folder