Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用PHP将数据数组写入文件_Php_Arrays_File - Fatal编程技术网

无法使用PHP将数据数组写入文件

无法使用PHP将数据数组写入文件,php,arrays,file,Php,Arrays,File,我有个问题。我无法使用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'),arr

我有个问题。我无法使用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()希望参数2是
中给出的字符串数组,它写在该文件中,没有数据。我需要将所有数据数组写入该文件并下载。请帮助我解决此问题。

如果您明确需要将数组放入文件,您可以使用此

fwrite($handle, print_r($result, true));
或者您可以将其转换为json,如下所示

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

稍后,当您阅读文件时,您可以使用json解码($your\u file\u content)

撤消操作,因为写入文件没有意义,除非您正在对该文件执行某些您没有向我们显示的操作

<?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;

?>

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

$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;
输出:
因此,将数组转换为字符串,例如使用
内爆
可以修改吗?文件的预期内容是什么?我需要得到数组值意味着
echo json\u encode($result)
值的输出。
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