In this chapter you've started to see how important it is to put together data in meaningful ways. You've looked at a number of more powerful kinds of arrays and tools to manipulate them. You've learned how to use the foreach loop to look at each element of an array in turn. You can use string indices to generate associative arrays. You know how to make two-dimensional arrays using both numeric and string indices. You've learned how to do several kinds of string manipulation tricks including searching for one string inside another, extracting substrings, and splitting a string into an array. You put all these skills together in an interesting and non-trivial application. You should be proud of your efforts so far.