Hi!
Oh Gott waren da viel Fehler drin, sorry, hier mal eine verbesserte Version ;-)
<?php
$file = file("bild.gif");
foreach($file as $line)
{
$var[]=$line;
//$var.=$line
}
echo memory_get_usage();
?>
Also das ist relativ sinnfrei was Du da machst ;-)
Das ist genau dasselbe als würdest Du sowas machen:
$var = file("bild.gif");
;-)
Du vergleichst außerdem Äpfel mit Birnen. Das eine erzeugt einen Array, das andere erzeugt einen String. Was brauchst Du? Das nimm auch.
Wenn Du alles in einen String haben willst, solltest Du eine Datei direkt in einen String lesen, z.B. mit fread() oder fgets(), oder noch besser mit file_get_contents().
mit einem bild komme ich auf 60904 bei .= und mit [] auf 60080!
natürlich wirkt sich das bei größeren files extremer aus.
Also extrem finde ich das nicht gerade. Außerdem, was glaubst Du wieviele Zeilenumbrüche eine .gif-Datei hat? Womöglich keinen einzigen, in dem Fall machen beide Varianten mit [] und .= im Prinzip dasselbe.
Es kommt drauf an was Du machen willst, wenn Du extrem große Dateien bearbeiten/analysieren willst, solltest Du nicht die gesamte Datei einlesen, sondern häppchenweise einlesen, bei Grafikdateien natürlich Schwachsinn. Aber eine Grafikdatei in einen Array zu laden ist mindestens genauso schwachsinnig ;-)
Es kommt drauf an was Du mit $var machen willst. Wenn Du es erst in einen Array lädst, weil Du glaubst das ist besser, und danach über implode wieder in einen String überführst, ist das doppelte Arbeit.
Du solltest lieber ein fertiges Script optimieren, als solche Dinge ohne jeden Zusammenhang.
Grüße
Andreas