The main thing I feel uncomfortable about with your implementation is that you're relying on the odities of PHP's type handling. You're taking a string, dividing it by one and PHP just happens to return the first part of that string. It could just as easily return 1, 0, false, true or fail with a fatal error and it may well do in future releases. How PHP handles sloppy type juggling is very deffinately not set in stone. Also, I don't know why you think variables are going to be more efficient for storing small amounts of data. For small amounts of data there isn't going to be a difference. Now, let's go onto the subject you seem to be most concerned about with this code. Optimization.
There are a number of things you could change to make it quicker. Firstly, [man]file_get_contents[/man] reads the entire contents of the file into memory and then you handle it as a whole. This means that a. you're iterating the file contents twice, once to read from the file and write to memory and once to read from memory and process b. you're using considerably more memory because you have to load the entire file into memory rather than just a bit at a time. So, first step would be to use [man]fopen[/man] and it's related functions. Now, the second is your dodgy way of handling the date part of each line in the file. To get the day part of the date with the least overhead use [man]substr[/man]. Then rather than creating variable variables I'd use arrays something like this (also, notice I'm putting them into an array rather than catenating them as a string. You will see why this is important later)
$entry[$day][] = $entry;
If you use an array method like this you have much more flexibility over how you can manage/maintan your code and data in the future. Think, for example, what would you do if you wanted to change how the page was displayed later down the line? You'd have to dive right into the logic of the program just to change the display. Also, think what happens if you later decide you want to order each day's entries alphabetically by one of the other fields, you'd have to rip everything up and start from scratch.
What we're trying to do in this forum is not just teach you how to fix the problem at hand (we've got the General and Coding forums for that) but also give you some insight into the principles of design. Help you to think about other considerations which need to be taken into account. An important design principle which describes the reason for what I've gone into in the previous paragraph is "Seperate what can change independently". What this principle means is that if we have two parts of a program which are likely to change independently of each other we should try to keep them as seperate from each other as possible. The most common application of this principle is the seperation of logic and display. In placing the results into an array this is exactly what we're doing.