【问题标题】:Create multiple file in PHP using foreach loop for array created using file() function使用 foreach 循环在 PHP 中为使用 file() 函数创建的数组创建多个文件
【发布时间】:2017-05-29 08:42:37
【问题描述】:

我正在尝试使用 foreach 循环在 PHP 中创建多个文件。 foreach 循环读取数组的内容,该数组是使用 text(.txt) 文件中的 file() 函数形成的。该循环应该创建一个包含数组中每个值的 [.php] 文件,但它只为数组中的最后一个值创建文件。

<?php
$user_list=file('users.txt');
$n=0;
foreach ($user_list as $user[$n]) {
if(!file_exists("Users/".$_POST[username]."-".$user[$n].".php")){
$file_c=fopen("Users/".$_POST[username]."-".$user[$n].".php", 'a+'); 
fwrite($file_c,"Content");  
}
$n++;
} 
?>

【问题讨论】:

  • $user_list 的输出是什么?
  • Rafael Shkembi 的输出是正确的,正是我想要的。

标签: php arrays file loops foreach


【解决方案1】:

如果您使用多个fwrite(),需要在写入文件完成后由fclose()关闭文件处理程序:

<?php
    $user_list=file('users.txt');

    foreach ($user_list as $user) {
        if(!file_exists("Users/".$_POST[username]."-".trim($user).".php")){
            $file_c=fopen("Users/".$_POST[username]."-".trim($user).".php", 'a'); 
            fwrite($file_c,"Content");
            fclose($file_c);
        }

    } 
?>

【讨论】:

  • 我用 fclose() 在你说之后,仍然只打印 LAST 值。
  • 我删除了 counter($n) 但这仍然没有帮助。当我打印[超链接]时,它甚至产生了问题。仍然只创建最后一个值的文件。
  • 用户a 而不是fopen()a+ 参数
  • 我也使用了参数 'a' 、 'x' 和 'w' ,还是不行。 :(
  • $user_list=file('users.txt');如何返回数组?是弦! users.txt 文件的内容是什么?
【解决方案2】:

问题是当您从text file 读取数据时,有很多机会添加以数组中的数据为后缀的space。我使用了trim() 方法,它对我来说效果很好,A建议,使用file_exists () 函数检查目录是否存在。以下代码对我有用,我对用户名进行了硬编码。

<?php
    $user_list=file('users.txt');
    $username = 'sdcds';

    foreach ($user_list as $user) {
        if(!file_exists('Users/'.$username."-".trim($user).".php")){

            $file_c = fopen('Users/'.$username."-".trim($user).".php", 'a+'); 
            fwrite($file_c,"Content");
            fclose($file_c);
        }

    } 
?>

【讨论】:

  • @Mrigank Pawagi 试试这个
  • 非常感谢兄弟..!我使用了修剪,现在所有文件都已创建。非常感谢你的帮助。只需查看 mrigangpawagi.github.io 一个我的项目就完成了!
猜你喜欢
  • 2018-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 2018-01-14
相关资源
最近更新 更多