【问题标题】:Could not write array of data into file using PHP无法使用 PHP 将数据数组写入文件
【发布时间】:2017-05-24 13:30:33
【问题描述】:

我有一个问题。我无法使用 PHP 将我的数据数组写入文件。我在下面解释我的代码。

<?php
$result=array(array('cat_id'=>'2','cat_name'=>'spirit','subcat_id'=>'20','subcat_name'=>'pizza'),array('cat_id'=>'3','cat_name'=>'Food','subcat_id'=>'23','subcat_name'=>'pakhal'),array('cat_id'=>'2','cat_name'=>'spirit','subcat_id'=>'22','subcat_name'=>'wine'),array('cat_id'=>'2','cat_name'=>'spirit','subcat_id'=>'20','subcat_name'=>'pizza'),array('cat_id'=>'3','cat_name'=>'Food','subcat_id'=>'24','subcat_name'=>'fuddy'),array('cat_id'=>'4','cat_name'=>'Continetal','subcat_id'=>'25','subcat_name'=>'cont'));
$handle = fopen("file.txt", "w");
fwrite($handle, $result);
fclose($handle);
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename('file.txt'));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize('file.txt'));
readfile('file.txt');
exit;
?>

在这里我还需要下载该文件。在这里我可以下载文件,但这个fwrite() expects parameter 2 to be string array given in 写在那个文件里面,没有数据。我需要将我所有的数据数组写入该文件并下载它。请帮我解决这个问题。

【问题讨论】:

  • 所以将数组转换为字符串,例如implode
  • 你能修改一下吗?
  • 文件的预期内容是什么?
  • 我需要得到那个数组值意味着echo json_encode($result)值的输出。

标签: php arrays file


【解决方案1】:

如果您明确需要将数组放入文件中,您可以这样做

fwrite($handle, print_r($result, true));

或者你可以把它转换成json,像这样

fwrite($handle, json_encode($result));

稍后当您读取文件时,您可以使用 json_decode($your_file_content) 撤消操作

【讨论】:

    【解决方案2】:

    首先你必须处理数组并格式化它,然后写入文件如下:

    $result=array(array('cat_id'=>'2','cat_name'=>'spirit','subcat_id'=>'20','subcat_name'=>'pizza'),array('cat_id'=>'3','cat_name'=>'Food','subcat_id'=>'23','subcat_name'=>'pakhal'),array('cat_id'=>'2','cat_name'=>'spirit','subcat_id'=>'22','subcat_name'=>'wine'),array('cat_id'=>'2','cat_name'=>'spirit','subcat_id'=>'20','subcat_name'=>'pizza'),array('cat_id'=>'3','cat_name'=>'Food','subcat_id'=>'24','subcat_name'=>'fuddy'),array('cat_id'=>'4','cat_name'=>'Continetal','subcat_id'=>'25','subcat_name'=>'cont'));
    $handle = fopen("file.txt", "w");
    $finalData = '';
    foreach ($result as $resultData) {
        foreach ($resultData as $key => $value) {
            $finalData .= ($key. ': '. $value.PHP_EOL);//you can play with this data in any way you want now
        }
    
    }
    fwrite($handle, $finalData);
    fclose($handle);
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename('file.txt'));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize('file.txt'));
    readfile('file.txt');
    exit;
    

    输出:

    cat_id: 2
    cat_name: spirit
    subcat_id: 20
    subcat_name: pizza
    cat_id: 3
    cat_name: Food
    subcat_id: 23
    subcat_name: pakhal
    cat_id: 2
    cat_name: spirit
    subcat_id: 22
    subcat_name: wine
    cat_id: 2
    cat_name: spirit
    subcat_id: 20
    subcat_name: pizza
    cat_id: 3
    cat_name: Food
    subcat_id: 24
    subcat_name: fuddy
    cat_id: 4
    cat_name: Continetal
    subcat_id: 25
    subcat_name: cont
    

    【讨论】:

      【解决方案3】:

      为此写入文件是没有意义的,除非您正在对该文件执行一些您没有向我们展示的操作。

      <?php
      $result=array(array('cat_id'=>'2','cat_name'=>'spirit','subcat_id'=>'20','subcat_name'=>'pizza'),array('cat_id'=>'3','cat_name'=>'Food','subcat_id'=>'23','subcat_name'=>'pakhal'),array('cat_id'=>'2','cat_name'=>'spirit','subcat_id'=>'22','subcat_name'=>'wine'),array('cat_id'=>'2','cat_name'=>'spirit','subcat_id'=>'20','subcat_name'=>'pizza'),array('cat_id'=>'3','cat_name'=>'Food','subcat_id'=>'24','subcat_name'=>'fuddy'),array('cat_id'=>'4','cat_name'=>'Continetal','subcat_id'=>'25','subcat_name'=>'cont'));
      
      header('Content-Type: application/json');
      header('Content-Disposition: attachment; filename=file.json');
      header('Expires: 0');
      header('Cache-Control: must-revalidate');
      header('Pragma: public');
      
      $encoded = json_encode($result);
      
      header('Content-Length: ' . strlen($encoded));
      
      echo $encoded;
      
      exit;
      
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-13
        • 1970-01-01
        • 2011-06-12
        • 2021-07-20
        • 2012-10-16
        • 1970-01-01
        • 2018-08-25
        • 1970-01-01
        相关资源
        最近更新 更多