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

时间:2013-08-22 07:36:29

标签: php arrays

我有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"
)

输出:

http://google.com       100
http://facebook.com     98
http://yahoo.com        95

我试过:file_put_contents('output.txt', $array1, "\t", $array2 );但功能只能带2个参数!有一个简单的解决方法吗?

4 个答案:

答案 0 :(得分: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);
}

它会更有效率,因为文件只打开一次。它还使您可以灵活地编写所需的数据。

答案 1 :(得分:2)

尝试array_combine喜欢

$new_array = array_combine($array2 , $array1);
file_put_contents('output.txt', $new_array);

答案 2 :(得分:0)

您需要组合数组并以可读格式保存它们。

$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);    

答案 3 :(得分:0)

由于您的输出示例格式很好,并且根据您用于查看文件的应用程序而非常不可预测,因此您可以考虑使用空格填充字符串:

$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);

example