回声阵列的一部分? PHP

时间:2013-03-21 13:46:43

标签: php file-handling

有人可以告诉我为什么我的代码回显整个数组而不是我在$list中声明的两个值我几乎不知道任何php所以有人能告诉我什么错了吗?

if(isset($_POST['button'])) {
    if( $_POST['filmnamn'] != "" && $_POST['betyg'] != "" && $_POST['link'] != "" && $_POST['photo'] != "" && $_POST['description'] != "") {
        $myFile = 'demo.txt';
        $titel = $_POST['filmnamn'] . ";" ;
        $betyg = $_POST['betyg'] . ";" ;
        $link = $_POST['link'] . ";" ;
        $photo = $_POST['photo'] . ";" ;
        $desc = $_POST['description'].PHP_EOL;
        $data = "$titel$betyg$link$photo$desc";
        $list = "$titel$betyg";
        $fh = fopen($myFile, 'a');
        fwrite($fh, $data);

        fclose($fh);

        $handle = fopen($myFile, 'r');
        $fileinfo = fread($handle, filesize($myFile));
        $fileinfo_array = explode(';', $fileinfo);
        foreach($fileinfo_array as $list){
            echo $list;
        }
    }
}

4 个答案:

答案 0 :(得分:3)

您设置了$list,但随后在foreach

中覆盖了它
$list = "$titel$betyg";

然后你做

foreach($fileinfo_array as $list){
    echo $list;
}

它成为数组的每个项目。您可以echo $list或使用:

$list = explode(";", $list);
array_pop($list); //remove last blank item
foreach($list as $item){
    echo $item;
}

修改

这将逐行读取文件并构建一个数组

while (!feof($handle)) {
   $lines[] = fgets($handle);
}
fclose($handle);

你想要回复信息:

foreach($lines as $list){
    //use my above code
}

注意:查看file_put_contents

答案 1 :(得分:1)

而不是给出一个变量的回声:

print_r($list);

答案 2 :(得分:1)

这一行:

fwrite($fh, $data);

将所有数组元素写入文件之前;它应该是

fwrite($fh, $list);

编辑:

只需直接访问元素,如果它只是两个;

$fileinfo_array[0];
$fileinfo_array[1];

或者您可以使用array_slice();

答案 3 :(得分:0)

这一行:

  

fwrite($ fh,$ data);

将所有数组元素写入文件之前;它应该是

  

fwrite($ fh,$ list);

编辑:

只需直接访问元素,如果它只是两个;

  

$ fileinfo_array [0]; $ fileinfo_array [1];

或者您可以使用array_slice();