Iemand met een mening over mijn wrapper van extract () ???
Deze versie kan alleen ook nested arrays extracten ;), nog niet echt fully getest.. maar wat vinden jullie ervan? misschien dat jullie wat testjes kunnen voeren
<?php
function extract_nested (&$array, $type = EXTR_OVERWRITE, $prefix = '')
{
/*
@ Is the array really an array?
*/
if (!is_array ($array))
{
trigger_error ('extract_nested (): First argument should be an array', E_USER_WARNING);
}
/*
@ If the prefix is set, check if the prefix matches an acceptable regex pattern
@ (the one used for variables)
*/
if (!empty ($prefix) && !preg_match ('#^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$#', $prefix))
{
trigger_error ('extract_nested (): First argument should be an array', E_USER_WARNING);
}
/*
@ Loop thru the array
*/
foreach ($array as $key => $val)
{
/*
@ If the key isn't an array extract it as we need to do
*/
if (!is_array ($array[$key]))
{
switch ($type)
{
case EXTR_OVERWRITE:
$GLOBALS[$key] = $val;
break;
case EXTR_SKIP:
$GLOBALS[$key] = isset ($GLOBALS[$key]) ? $GLOBALS[$key] : $val;
break;
case EXTR_PREFIX_SAME:
if (isset ($GLOBALS[$key]))
{
$GLOBALS[$prefix . $key] = $val;
}
else
{
$GLOBALS[$key] = $val;
}
break;
case EXTR_PREFIX_ALL:
$GLOBALS[$prefix . $key] = $val;
break;
case EXTR_PREFIX_INVALID:
if (ctype_digit ($key{0}))
{
$GLOBALS[$prefix . $key] = $val;
}
else
{
$GLOBALS[$key] = $val;
}
break;
case EXTR_IF_EXISTS:
if (isset ($GLOBALS[$key]))
{
$GLOBALS[$key] = $val;
}
break;
case EXTR_PREFIX_IF_EXISTS:
if (isset ($GLOBALS[$key]))
{
$GLOBALS[$prefix . $key] = $val;
}
else
{
$GLOBALS[$key] = $val;
}
break;
case EXTR_REFS:
$GLOBALS[$key] =& $array[$key];
break;
}
}
/*
@ The key is an array... use the function on that index
*/
else
{
nested_extract ($array[$key], $type, $prefix);
}
}
}
?>
901 views