The functional difference between array_key_exists($key, $array) and isset($array[$key]) is that isset returns false when the key exists but contains null. Functionality aside, there is a demonstrable performance difference.
Sure enough, after averaging a few benchmarks together the outcome was clear.
isset
0.0248870849609
array_key_exists
0.604112148285
When performance is important target isset() when applicable. It’s even possible to use a fall through to increase performance, here’s an example from my Options class: if (!isset($this->_options[$resolvedName]) && !array_key_exists($resolvedName, $this->_options))
Append Performance
In the following test case there was no performance difference between usage of append or directly addressing an index.
A common usage, at least for extract(), has been to allow an associative array to be passed to a function for use as named optional parameters, however, there is a lot wrong with dumping an array into the symbol table and then checking if what you want exists or not.
I have designed a pattern that allows an object to accept and address public level optional named arguments without the problems that could be associated with the compact()/extract() pattern. This pattern does require at least PHP 5.3 (uses late static binding) and overloads __get/__set preventing the child class from doing so.
There are several limitations in this program due to the limits of the underlying GraphicsPath class. Though the code is in place to do so, nodes can not be directly edited once created, for example. Nor can different paths be drawn using different pens.
Boggle.exe is a computerized version of the Hasbro dice game. It’s intended to be played by multiple people infront of the computer using pens and paper, no internet play is supported as it’s ridiculously easy to cheat. The main neat feature of Boggle.exe over it’s physical counterpart is a board solver. Once the game is over, all of the valid words inside of the board are shown and can be highlighted (see picture).
Download (source and executable) — Extract to it’s own directory and run \bin\debug\Boggle.exe. words.txt must be in the same directory as the executable.
The reason why is pretty simple, DVDs are not remotely as fast as any other media, and in 2009, it’s starting to show. Flash drives are larger, faster, and more versatile than DVDs, and they’re costing less and less. But what about an older system that can not boot from USB storage? Well, there is an option, and that’s to use the destination drive as the source. Install the drive into a separate computer (via a usb dongle is fine) and follow these steps. Note that these directions work if you’re trying to make a bootable USB flash drive, too.
This was more of a project than I was originally expecting, Microsoft prevents the Windows XP Powertoy Calculator from running in Vista in 2 separate places, but in the end, it runs perfectly in Vista, all the limitations are false. (Edit: I can confirm that this hacked copy works in Windows 7, too!)