[英]Save contents of multiple php arrays to same line in file
我有2个php数组, $array1
和$array2
,如何只在同一行标签上打印数组内容?
INPUT:
Array (
[0] => "100"
[1] => "98"
[2] => "95"
)
Array (
[0] => "http://google.com"
[1] => "http://facebook.com"
[2] => "http://yahoo.com"
)
OUTPUT:
http://google.com 100
http://facebook.com 98
http://yahoo.com 95
我试过了: file_put_contents('output.txt', $array1, "\\t", $array2 );
但是函数只能接受2个参数! 有一个简单的解决方法吗?
是的,循环遍历元素并连接字符串:
for ($i = 0; $i < count($array1); $i++) {
file_put_contents('output.txt', $array1[$i]."\t".$array2[$i], FILE_APPEND );
}
尽管file_put_contents
可以如上所述工作,但是我还是用fopen
, fwrite
和fclose
实现它:
$fp = fopen("output.txt", "w+");
if ($fp) {
for ($i = 0; $i < count($array1); $i++) {
fwrite($fp, $array1[$i]."\t".$array2[$i] );
}
fclose($fp);
}
因为文件只打开一次,所以效率更高。 它还使您可以灵活地编写所需的数据。
尝试使用array_combine
$new_array = array_combine($array2 , $array1);
file_put_contents('output.txt', $new_array);
您需要组合数组并以可读格式保存它们。
$saveArray = json_encode(array_combine($arr1 , $arr2));
file_put_contents('array.txt', $saveArray);
并取回阵列
$array = json_decode(file_get_contents('array.txt', true));
如果要以可读格式保存数组,可以尝试此操作
$saveArray = print_r(array_combine($arr1 , $arr2), true);
file_put_contents('array.txt', $saveArray);
由于您的输出示例格式正确,并且制表符众所周知是不可预测的,具体取决于您使用的是哪个应用程序来查看文件,您可以考虑使用空格填充字符串:
$out = '';
$max = max(array_map('strlen', $arr2))+5;
foreach(array_combine($arr2, $arr1) as $key => $val){
$out .= sprintf("%-{$max}s%s\n", $key, $val);
}
file_put_contents('output.txt', $out);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.