繁体   English   中英

将多个php数组的内容保存到文件中的同一行

[英]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可以如上所述工作,但是我还是用fopenfwritefclose实现它:

$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM