Jim Lucas wrote: > Jay Moore wrote: >> Shawn McKenzie wrote: >>> Jay Moore wrote: >>>> Jim Lucas wrote: >>>>> Jay Moore wrote: >>>>>> Greetings list. >>>>>> >>>>>> Say I have a function that escapes a string before being passed to >>>>>> MySQL >>>>>> like so: >>>>>> >>>>>> function escape($id, &$string) >>>>>> { >>>>>> $string } >>>>> Use an array as an alternate method of sending/returning data to the >>>>> second argument. >>>>> >>>>> function escape($id, &$data) { >>>>> if ( is_array($data) ) { >>>>> foreach ( $data AS $k => $v ) { >>>>> escape($id, $v); >>>>> $data[$k] = $v; >>>>> } >>>>> } else { >>>>> $data = mysql_real_escape_string($data, $id); >>>>> } >>>>> } >>>>> >>>>> This would handle any number of nested arrays/datasets. >>>>> >>>>> Hope it helps. >>>>> >>>> Will that work properly? >>>> >>>> $a = "'hello'"; >>>> $b = "sup"; >>>> $c = "\\hola'"; >>>> >>>> $d = array($a, $b, $c); >>>> >>>> escape($id, $d); >>>> >>>> Jay >>> I would try: $d = compact('a', 'b', 'c'); >>> >> What is the difference? Please excuse my naivety. :) >> >> Jay >> > > Good point. > > http://us2.php.net/compact > > Key phrase... > > "it does the opposite of extract()" > > So, using that I would do it like this... > > > $a = "'hello'"; > $b = "sup"; > $c = "\\hola'"; > > $d = compact('a', 'b', 'c'); > escape($id, $d); > extract($d); > > with the above changes to the escape() function. > Right, so: $d = array($a, $b, $c); would give you an array like this: 0 => "'hello'" 1 => "sup" 2 => "\\hola'" Whereas: $d = compact('a', 'b', 'c'); would give you: 'a' => "'hello'" 'b' => "sup" 'c' => "\\hola'" So the keys are your var names instead of numerical indexes. Also, I can't test it now, but a shorter though cramped way might be (assuming that you modify escape() to return instead of modifying the reference): extract(escape($id, compact('a', 'b', 'c'))); -- Thanks! -Shawn http://www.spidean.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php