You are here: Re: array_walk - userdata as array by ref « PHP Programming Language « IT news, forums, messages
Re: array_walk - userdata as array by ref

Posted by Hendri Kurniawan on 04/20/07 04:29

Steve wrote:
> here's a quirk i can't seem to handle, just hack. since call-time
> by-reference is depreciated and i don't want to enable it in the php.ini,
> i'm kind of stuck when i want to pass userdata as an array byref that is
> initially = array().
>
> // the array being walked
> $numbers = array(1, 56, 999, 1000, 28, 65);
>
> // the work-around
>
> // the callback
> function validateInput(&$value, $key, &$errors)
> {
> $maxValue = 999;
> if ($value <= $maxValue) return;
> $errors[1][$key] = 'Element ' . $key. ' must be a whole number between 0
> and ' . $maxValue . '.';
> }
> // the hack
> $error = array();
> $errors = array('', &$error);
> array_walk($numbers, 'validateInput', $errors);
> $errors = $errors[1];
> print_r($errors);
>
> // what i'd like to do
>
> // the callback
> function validateInput(&$value, $key, &$errors)
> {
> $maxValue = 999;
> if ($value <= $maxValue) return;
> $errors[$key] = 'Element ' . $key. ' must be a whole number between 0 and
> ' . $maxValue . '.';
> }
> $errors = array();
> array_walk($numbers, 'validateInput', $errors);
> print_r($errors);
>
>
> it seems as though php doesn't allocate memory for $errors when it is
> defined as an empty array since it has no data (!isset), and therefore
> there's a pointer to nothing (figuratively). i assume since $errors =
> array('', &$error) allocates memory for the structure, the callback then has
> something to work on. the '' being what actually triggers allocation (makes
> room for \0 i guess). that was my reasoning when i came up with the hack,
> but i'd like to know for sure.
>
> does that sound about right? suggestions on getting the results i looking
> for?
>
> tia,
>
> me
>
>
>

Both of the code you posted did not work on my box (php5.2) unmodified.

My initial thought will be using foreach on the array $numbers, but you
might have your own reason not to use it.


Hendri Kurniawan

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация