| 
<?php
require ( "RandomAccessFile.phpclass" ) ;
 
 $random_file    =  "random.dat" ;
 
 // Initialize a file containing the numbers 0 through 100, written with 3 digits
 // and terminated by a newline (each record will occupy 4 bytes)
 // This file will be used as our example case for testing random file access.
 $fp    =  fopen ( $random_file, "w" ) ;
 
 for  ( $i = 1 ; $i  <  100 ; $i ++ )
 fwrite ( $fp, sprintf ( "%03d", $i ) . "\n" ) ;
 
 fwrite ( $fp, "100" ) ;        // Note that the last record will be incomplete (no terminating newline)
 fclose ( $fp ) ;
 
 // Instantiate a random access file and open it in read/write mode.
 // "4" is the record size, "1024" the number of records to be cached, and "\n" the filler character to be
 // used when inserting empty records
 $rf = new RandomAccessFile ( $random_file, 4, 0, 1024, "\n" ) ;
 $rf -> Open ( ) ;
 
 // Show the number of records that this file holds (should be 100)
 echo ( "Count = " . count ( $rf ) . "\n" ) ;
 
 // Swap 10 records (3d parameter) from record #0 with record #10
 // The file should now have the following values (one per line) :
 // Records  0 to  9 : 011..020
 // Records 10 to 19 : 001..010
 // Records 20 to 99 : 021..099
 $rf -> Swap ( 0, 10, 10 ) ;
 
 // Now copy 20 records from record #0 to record #100 (which is past the end of file)
 // The new contents should have 20 more records, with values in the range 011..020 and 001..010
 $rf -> Copy ( 0, 100, 20 ) ;
 
 // Note that you can use the for() and foreach() constructs to loop through each record
 foreach  ( $rf  as  $entry )
 echo ("[" . trim ( $entry ) . "]\n") ;
 
 // There is also a small (and dumb) cache that store a few statistics
 echo ( "Hits : {$rf -> CacheHits}, misses = {$rf -> CacheMisses}\n" ) ;
 
 |