Meissa Posted February 22, 2007 Share Posted February 22, 2007 This is probably really stupid... maybe I'm wording the question wrong in google Example: I have a flatfile that is 4 bytes long: 1234 I want to assign four different variables: $a = flatfile(byte1) (I want it to equal "1") $b = flatfile(byte2) (I want it to equal "2") $c = flatfile(byte3) (so forth, so on...) $d = flatfile(byte4) I can't figure out the syntax... is there a way to do this, or is this really too simple to have ever been practical? Meissa =/ Link to comment https://forums.phpfreaks.com/topic/39644-solved-can-you-read-individual-bytes-from-a-flat-file/ Share on other sites More sharing options...
gazever Posted February 22, 2007 Share Posted February 22, 2007 I'm a complete newbie but this works <?php $data = '1234'; $a = $data[0]; $b = $data[1]; $c = $data[2]; $d = $data[3]; echo $a."<br>"; echo $b."<br>"; echo $c."<br>"; echo $d."<br>"; ?> outputs:- 1 2 3 4 Gaz Link to comment https://forums.phpfreaks.com/topic/39644-solved-can-you-read-individual-bytes-from-a-flat-file/#findComment-191377 Share on other sites More sharing options...
Meissa Posted February 22, 2007 Author Share Posted February 22, 2007 Wow... I tried that earlier, but didn't have any luck... maybe I missed something, I'll go back and try again... Thanks Link to comment https://forums.phpfreaks.com/topic/39644-solved-can-you-read-individual-bytes-from-a-flat-file/#findComment-191379 Share on other sites More sharing options...
boo_lolly Posted February 22, 2007 Share Posted February 22, 2007 to read a flat file one byte at a time... <?php /*open file for reading*/ $fp = fopen('your/directory/file.txt', 'r'); /*while still reading the file*/ while(!feof($fp)){ $character = fgets($fp, 2); echo $character ."<br />\n"; } ?> your situation may call for this, but i wouldn't recommend assigning a new variable for every byte in your flat file. if i were you, i'd store them all into an array. <?php /*set array*/ $array = array(); /*open file for reading*/ $fp = fopen('your/directory/file.txt', 'r'); /*while still reading the file*/ while(!feof($fp)){ $array[] = fgets($fp, 2); } print_r($array); ?> Link to comment https://forums.phpfreaks.com/topic/39644-solved-can-you-read-individual-bytes-from-a-flat-file/#findComment-191384 Share on other sites More sharing options...
Meissa Posted February 22, 2007 Author Share Posted February 22, 2007 Here's what I'm trying to do.. sorry if I don't write this properly: <?php /*My homemade counter*/ $countertxt = "counter.txt"; $fr = fopen($countertxt, 'r'); $count = fread($fr, filesize($countertxt)); //reads the current value of the flat file $count = $count + 1; //increments the value by 1 $fo = fopen($countertxt, 'w'); fwrite($fo, $count); //writes the new value to the flat file echo $count; //everything at this point works fine /*Here's where I'm running into trouble*/ /*I want to make the page display a .GIF file according to the number that is stored in the flat file*/ $a = $count[0]; $b = $count[1]; $c = $count[2]; $d = $count[3]; echo "<img src='$a.GIF'>"; echo "<img src='$b.GIF'>"; echo "<img src='$c.GIF'>"; echo "<img src='$d.GIF'>"; ?> I'm unable to read the variable $count one byte at a time However, if I were to assign the value like this: $count = '1234'; It works properly... for some reason it won't treat $count like a variable with 4 numbers... probably because $count is associated with opening files... Any thoughts? Link to comment https://forums.phpfreaks.com/topic/39644-solved-can-you-read-individual-bytes-from-a-flat-file/#findComment-191395 Share on other sites More sharing options...
gazever Posted February 22, 2007 Share Posted February 22, 2007 Try This, Again I am a newbie, sure someone has a better way, but seems you need to convert it from a number to a string. <?php /*My homemade counter*/ $countertxt = "counter.txt"; $fr = fopen($countertxt, 'r'); $count = fread($fr, filesize($countertxt)); //reads the current value of the flat file $count = $count + 1; //increments the value by 1 $fo = fopen($countertxt, 'w'); fwrite($fo, $count); //writes the new value to the flat file echo $count; //everything at this point works fine $data = strval($count); /// need to convert the number to a string to use the method below /*Here's where I'm running into trouble*/ /*I want to make the page display a .GIF file according to the number that is stored in the flat file*/ $a = $data[0]; $b = $data[1]; $c = $data[2]; $d = $data[3]; echo "<img src='$a.GIF'>"; echo "<img src='$b.GIF'>"; echo "<img src='$c.GIF'>"; echo "<img src='$d.GIF'>"; ?> This works Gaz Link to comment https://forums.phpfreaks.com/topic/39644-solved-can-you-read-individual-bytes-from-a-flat-file/#findComment-191421 Share on other sites More sharing options...
Meissa Posted February 22, 2007 Author Share Posted February 22, 2007 Dude, you absolutely rock!! Thanks a lot. Link to comment https://forums.phpfreaks.com/topic/39644-solved-can-you-read-individual-bytes-from-a-flat-file/#findComment-191427 Share on other sites More sharing options...
boo_lolly Posted February 22, 2007 Share Posted February 22, 2007 i'm sorry i misunderstood the issue. try this: <?php /*set array*/ $array = array(); /*open file for reading*/ $fp = fopen('your/directory/file.txt', 'r'); /*store each byte into an index in the array*/ while(!feof($fp)){ $array[] = fgets($fp, 2); } /*print each index in the array as an image name*/ foreach($array as $img){ echo "<img src=\"{$img}.GIF\"><br />\n"; } ?> Link to comment https://forums.phpfreaks.com/topic/39644-solved-can-you-read-individual-bytes-from-a-flat-file/#findComment-191431 Share on other sites More sharing options...
gazever Posted February 22, 2007 Share Posted February 22, 2007 Melissa, thanks Newer code here <?php /*My homemade counter*/ $countertxt = "counter.txt"; $fr = fopen($countertxt, 'r'); $count = fread($fr, filesize($countertxt)); //reads the current value of the flat file $count = $count + 1; //increments the value by 1 $fo = fopen($countertxt, 'w'); fwrite($fo, $count); //writes the new value to the flat file echo $count; //everything at this point works fine if ($count < 10){ // $count = "0".$count; } if ($count < 100){ $count = "0".$count; //code here added to add prevailing zeros before number reaches 1000, to } // display 0004, 0014, 0114 etc. if ($count < 1000){ $count = "0".$count; } // $data = strval($count); /// need to convert the number to a string to use the method below /*Here's where I'm running into trouble*/ /*I want to make the page display a .GIF file according to the number that is stored in the flat file*/ $a = $data[0]; $b = $data[1]; $c = $data[2]; $d = $data[3]; echo "<img src='$a.GIF'>"; echo "<img src='$b.GIF'>"; echo "<img src='$c.GIF'>"; echo "<img src='$d.GIF'>"; ?> Problem when display a count 0f 0014, etc, would display as 14-- as there the first two characters hope you understand what im on about. Gaz Link to comment https://forums.phpfreaks.com/topic/39644-solved-can-you-read-individual-bytes-from-a-flat-file/#findComment-191456 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.