Re: Array references - how to unset() ?
| From: | Robert Cummings | Date: | Thu, 03 Sep 2009 00:40:03 +0000 |
| Subject: | Re: Array references - how to unset() ? | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-297617@lists.php.net to get a copy of this message | ||
Martin Zvarík wrote:
Robert Cummings napsal(a):This is possible. You're just not giving enough consideration to your exit strategy :) <?php function unset_deep( &$array, $keys ) {Martin Zvarík wrote:Thanks for reply, but I want to: unset($ARR['a']['b']) Imagine I have this: $KEYS = array('a', 'b', 'c'); And I want to: unset($ARR['a']['b']['c'])$ARR = array( 'a' => array('b' => 'blah') ); function set($key) {unset( $ARR[$k] ) Cheers, Rob.global $ARR;foreach ($key as $i => $k) { if ($i == 0) { $sourcevar =& $ARR[$k]; } else { $sourcevar =& $sourcevar[$k]; } }// unset($sourcevar); // will cancel the reference - we want to unset the ['b'], but how?$sourcevar = null; // will set it NULL, but won't unset... foreach ($ARR ... // I could run a cleanup, that would go through all of the array and unset what is NULL, but I would need to use REFERENCES again!! array_walk_recursive() is also worthless... any ideas? } set( array('a', 'b') );
$final = array_pop( $keys );
foreach( $keys as $key )
{
$array = &$array[$key];
}
unset( $array[$final] );} $value = array (
'a' => array
(
'b' => array
(
'c' => 'C',
'd' => 'D',
'e' => 'E'
),
),
);
$keys = array('a', 'b', 'c');
unset_deep( $value, $keys );
print_r( $value );
?>
Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP