Test your variables!
When PHP throws you an error, there is always a reason. My dev box is set up to throw me everything it finds, and as I am working on a code that needs strong optimization, a question crossed my mind. Before I ask the question, here’s the (simplified) error-ing code:
// Function is called many times (~1M)
function doSomething($arrTest) {
$strName = $arrTest[0];
$strType = $arrTest[1];
$strColor = $arrTest[2];
}
$arrTest = array('banana', 'fruit');
doSomething($arrTest);
Of course, $arrTest[2] doesn’t exist, and PHP, as friendly as it is, works perfectly, just throwing a notice. But, is it faster to use a variable directly not knowing if it exists, or instead, test it every single time you use it?
Nothing speaks better than a good test, so here it goes:
$strTest = '';
$arrTest = array('first row');
for ($i=0; $i<1000000; $i++) {
$strTest = $arrTest[$i];
}
In this test, only the first index is set, so from $i=1 to $i=1000000, PHP won’t find a value in the array and set $strTest to null.
Let’s try it with a variable test:
$strTest = '';
$arrTest = array();
$arrTest[0] = 'first row';
for ($i=0; $i<1000000; $i++) {
$strTest = isset($arrTest[$i]) ? $arrTest[$i] : 0;
}
Results:
The second test performs twice as fast than the first one.