[TYPO3-core] RFC: is_array check extension manager

Franz Holzinger franz at fholzinger.com
Wed Aug 15 11:01:22 CEST 2007


Hello Oliver, 

> Franz Holzinger schrieb:
>> Michael Stucki writes:
>>> No because he loops over $conf['constraints']['conflicts'].
>>> $conf['constrains'] can be an array while still there might be no
>>> $conf['constraints']['conflicts']! So checking this first using isset
>>> is the only right thing to do.
>>> Please double-check such tiny issues before writing to this list.
>> 
>> I see no sense in this to check isset anded with is_array. If it is an
>> array it must be also be set. So the first parameter is redundant.
>> See php.net
>> bool is_array ( mixed $var )
>> Finds whether the given variable is an array.
>>>> if (isset($conf['constraints']['conflicts']) &&
>>>> is_array($conf['constraints']['conflicts'])) {
> 
> Have you tested this without disabling PHP warnings?! The isset() works
> even if the element to check isn't defined - returns false but no
> warnings. As Michael mentioned before, please double check and test such
> basic issues before posting to the Core-List. Thanks! 
> 
> The isset($array['key']) && is_array($array['key']) is the correct way!

Here is the code to test it: 

$tmp = 'test'; 

if (is_array($tmp))	{
	echo $tmp['a']['1'];
} 

This works fine under PHP 5.2.1. No isset($tmp) is necessary even if I have 
commented out the $tmp = 'test' line.
// $tmp = 'test'; 

In the Install Tool:
[SYS][displayErrors] = 1 

This also works: 

$tmp = 'test'; 

if (is_array($tmp['a']))	{
	foreach ($tmp['a'] as $k => $v)	{
		echo $tmp['a']['1']['2'];
	}
} 

double test:
$tmp = 24; 

It also works with integers. 

debug info:
Integer  $tmp  24 

And yes, the error message is shown in this case but only for the not array 
used in the foreach loop: 

echo $hello['1']['2']['3'];
foreach ($hello as $k => $v)	{
	echo $v['3'];
} 

Warning: Invalid argument supplied for foreach() in 
/var/www/html/typo3-svn/TYPO3core/trunk/typo3/ext/tt_products/control/class. 
tx_ttproducts_main.php on line 121 

So it seems to be an overkill even for PHP5.
Or is there any test environment where I can see that the leading isset is 
really needed under specific circumstances? 


 - Franz 

 

 





More information about the TYPO3-team-core mailing list