Below is the text of the page https://ua.php.net/implode stored 2007-03-01 by archive.org.ua. The original page over time could change. View as original html

PHP: implode - Manual

[/] downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net s earch for in the function list all php.net sites this mirror only online documentation bug database Site News Archive All Changelogs just pear.php.net just pecl.php.net just talks.php.net general mailing list developer mailing list documentation mailing list PHP Manual String Functions addcslashes addslashes bin2hex chop chr chunk_ split convert_ cyr_ string convert_ uudecode convert_ uuencode count_ chars crc32 crypt echo explode fprintf get_ html_ translation_ table hebrev hebrevc html_ entity_ decode htmlentities htmlspecialchars_ decode htmlspecialchars implode join levenshtein localeconv ltrim md5_ file md5 metaphone money_ format nl_ langinfo nl2br number_ format ord parse_ str print printf quoted_ printable_ decode quotemeta rtrim setlocale sha1_ file sha1 similar_ text soundex sprintf sscanf str_ getcsv str_ ireplace str_ pad str_ repeat str_ replace str_ rot13 str_ shuffle str_ split str_ word_ count strcasecmp strchr strcmp strcoll strcspn strip_ tags stripcslashes stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos strrchr strrev strripos strrpos strspn strstr strtok strtolower strtoupper strtr substr_ compare substr_ count substr_ replace substr trim ucfirst ucwords vfprintf vprintf vsprintf wordwrap join htmlspecialchars Last updated: Mon, 12 Feb 2007 view this page in Brazilian Portuguese Chinese (Simplified) Chinese (Hong Kong Cantonese) Chinese (Traditional) Czech Danish Dutch Finnish French German Greek Hebrew Hungarian Italian Japanese Korean Polish Romanian Russian Slovak Spanish Swedish implode (PHP 4, PHP 5) implode — Join array elements with a string Description string implode ( string $glue, array $pieces ) Returns a string containing a string representation of all the array elements in the same order, with the glue string between each element. Example 2306. implode() example Note: implode() can, for historical reasons, accept its parameters in either order. For consistency with explode() , however, it may be less confusing to use the documented order of arguments. Note: As of PHP 4.3.0, the glue parameter of implode() is optional and defaults to the empty string(''). This is not the preferred usage of implode() . We recommend to always use two parameters for compatibility with older versions. Note: This function is binary-safe. See also explode() , and split() . add a note User Contributed Notes implode drewish at katherinehouse dot com 11-Jan-2007 06:07 Here's a pretty clean version of the english_list: ahigerd at stratitec dot com 04-Jan-2007 04:43 Note that PHP uses copy-on-write so passing parameters (even array parameters) by reference gains you no performance benefit, and in fact in some cases can HURT performance. For example: php > $array = array('a','s','d','f'); php > $start = microtime(true); for($i=0; $i<1000000; $i++) byref($array); echo microtime(true)-$start; 2.40807890892 php > $start = microtime(true); for($i=0; $i<1000000; $i++) byval($array); echo microtime(true)-$start; 1.40822386742 bishop 23-Nov-2006 04:33 The english_list() implementation of davidpk212 at gmail dot com, Andy Morris, and tshort at cisco dot com does not handle the case of a two-element array with Oxford comma. Example: Here's another implementation that addresses this issue, uses pass-by-reference without modifying the array, and illustrates yet another approach to solving the problem: Run times for this version are comparable to the run times for heir earlier posted versions. richard at happymango dot me dot uk 23-Nov-2006 02:43 This is a simple function that is the same as implode except it allows you to specify two glue parameters instead of one so an imploded array would output "this, this, this and this" rather than "this, this, this, this, this". This is useful if you want to implode arrays into a string to echo as part of a sentence. It uses the second glue between the last two items and the first glue between all others. It will use the second glue if there are only two items to implode so it would output "this and this". 2 )? implode ( $glue1 , array_slice ( $array , 0 , - 2 )). $glue1 : "" ). implode ( $glue2 , array_slice ( $array , - 2 )); } //example below $array = array( "Monday" , "Tuesday" ); echo "1: " . implode2 ( ', ' , ' and ' , $array ). "
" ; $array = array( "Mon" , "Tue" , "Wed" , "Thu" , "Fri" ); echo "2: " . implode2 ( ', ' , ' & ' , $array ). "
" ; $array = array( 1 , 2 , 3 , 4 , 10 ); echo "3: " . implode2 ( ' + ' , ' = ' , $array ). "
" ; ?> This outputs 1: Monday and Tuesday 2: Mon, Tue, Wed, Thu & Fri 3: 1 + 2 + 3 + 4 = 10 Demonisch 05-Oct-2006 12:11 Very simple function for imploding a certain column in a 2D array. Useful if you have fetched records from a database in an associative array and want to store all the values in a certain column as a string, for use with JavaScript or passing values from page to page. $sep = the separator, such as " ", "," or "&" $array = the 2D associative array $key = the column key, such as "id" Feel free to add error protection function implodeArray2D ($sep, $array, $key) { $num = count($array); $str = ""; for ($i = 0; $i < $num; $i++) { if ($i) { $str .= $sep; } $str .= $array[$i][$key]; } return $str; } triptripon at gmail dot com 06-Sep-2006 12:18 Here's my 2 matching (implode|explode)_with_key functions. Notice, the inglue, outglue cannot appear within the keys\values. function implode_with_key($assoc, $inglue = '>', $outglue = ',') { $return = ''; foreach ($assoc as $tk => $tv) { $return .= $outglue . $tk . $inglue . $tv; } return substr($return,strlen($outglue)); } function explode_with_key($str, $inglue = ">", $outglue = ',') { $hash = array(); foreach (explode($outglue, $str) as $pair) { $k2v = explode($inglue, $pair); $hash[$k2v[0]] = $k2v[1]; } return $hash; } -- Tomer Levinboim worldwideweb dot C-Kling dot de 12-Aug-2006 10:15 A Script for imploding a multideimensional Array. You give an array of separators in the first argument, and a (multidimensional) array in the second. The script will return the imploded array. adnan at barakatdesigns dot net 23-May-2006 07:17 An easier way of achieving the same result as implode_with_keys() - and quicker execution time: 'some text' , 'a[2]' => 'even more text' ), false , true ); /* Will output 'a%5B1%5D=some+text&a%5B2%5D=even+more+text' */ /* This won't break html validation */ echo implode_with_keys (array( 'a[1]' => 'foo bar' , 'b' => 'more text' ), '|' ); /* Will output 'a[1]=foo bar|b=more text' */ ?> dabduster at gmail dot com 03-Jan-2006 06:39 an implementation of adrian at foeder dot de implode_with_keys function for input and update sql statement. function implode_param($glue, $array, $valwrap='', $mode = 0) { /* if mode = 0 output is key and values if mode = 1 output only keys if mode = 2 output only values */ switch ($mode){ case 1: foreach($array AS $key => $value) { $ret[] = $valwrap.$key.$valwrap; } break; case 2: foreach($array AS $key => $value) { $ret[] = $valwrap.$value.$valwrap; } break; default: case 0: foreach($array AS $key => $value) { $ret[] = $key."=".$valwrap.$value.$valwrap; } break; } return implode($glue, $ret); } Hotmail resident Tree2054 08-Dec-2005 09:57 Combining into one function: function implode_with_options($assoc_array, $prefix = '', $k_v_glue = '', $vwrap = '', $seperator = '') { foreach ($assoc_array as $k => $v) { $tmp[] = $k . $k_v_glue . $vwrap . $v . $vwrap; } return $prefix . implode($seperator, $tmp); } $items = array('Apples', 'number' => 3, 'Vehicle' => ''); // For a query string: echo implode_with_options($items, '?', '=', '', '&'); /** * Produces * ?0=Apples&number=3&Vehicle= */ // For a SQL query echo implode_with_options($items, '', '=', '"', ', '); /** * Produces * 0="Apples", number="3", Vehicle="" */ adrian at foeder dot de 31-Oct-2005 02:53 ...and a mysql-update-statement-compatible implementation of implode_with_keys: $value ) { $ret [] = $key . "=" . $valwrap . $value . $valwrap ; } return implode ( $glue , $ret ); } ?> so implode_with_keys(", ", $array, "'") will output: key1='value1', key2='value2' and so on. Useful for UPDATE table SET key1='value1', key2='value2' Peter Hopfgartner 27-Sep-2005 05:26 Correctly initializing all variables, this would become: function implode_with_key($assoc, $inglue = '=', $outglue = '&'){ $return = ''; foreach ($assoc as $tk => $tv) { $return = ($return != '' ? $return . $outglue : '') . $tk . $inglue . $tv; } return $return; } Note, the return value is also well defined if $assoc is empty. Regards php at josh dot jeppsons dot org 09-Sep-2005 07:22 Another variation on implode_with_key: $tv ) { $return = (isset( $return ) ? $return . $outglue : '' ) . $tk . $inglue . $tv ; } return $return ; } ?> pr10n at spymac dot com 29-Aug-2005 07:46 A little tweak on info at urbits dot com's suggestion just incase someone changes their value of $outglue: $tv ) $return .= $outglue . $tk . $inglue . $tv ; return substr ( $return , strlen ( $outglue )); } ?> info at urbits dot com 20-Aug-2005 04:06 I liked memandeemail's (27-Apr-2005) neat code for imploding an associative array. I have done a mod so that, by default, it returns a url query string. $tv ) $return .= $outglue . $tk . $inglue . $tv ; return substr ( $return , 1 ); } ?> Example: "foo" , "b" => "bar" , "c" => "foobar" ); echo ( implode_with_key ( $assoc_array ); ?> ouput: a=foo&b=bar&c=foobar usage: After altering the $HTTP_GET_VARS values, I pass $HTTP_GET_VARS to the function to easily build variation urls for links and header redirects. note: This function doesn't encode the url string or check for empty variables. cristianDOTzuddas [AT] gmailDOTcom 07-Jul-2005 10:22 ...and another variation of "implode_assoc" function. Just added the boolean parameter $urlencoded; if TRUE returns the array value in URL encod format. If the parameter is not given it behaves like the original function. $item ) { if (! $skip_empty || isset( $item )) { if ( $urlencoded ) $output [] = $key . $inner_glue . urlencode ( $item ); else $output [] = $key . $inner_glue . $item ; } } return implode ( $outer_glue , $output ); } ?> sam dot bledsoe at nosp at nn dot gmail dot com 01-Jun-2005 06:57 The function below recursively outputs an array in a format condusive to parsing it in php or another scripting language. It does NOT output the name of the original array, for that see note 1. It handles all the cases I could think of elegantly. Comments and criticisms are welcome. For an array constructed with: $arr = array("foo" => array('bar' => array(0 => "value 0", 1 => "value 1")), "foo two" => array(0 => array("bar" => "value2"))); The line below: echo implode_parseable("=", ";
$", $arr, "$", ";"); Will produce: $foo["bar"][0]="value 0"; $foo["bar"][1]="value 1"; $foo_two[0]["bar"]="value2"; NOTES: 1) If the leading identifier on a line is a number, the output will most likely be unusable since variable names cannot begin with numbers. You can get around this by doing something like: $arr = array('arr' => $arr); This will output the array as it actually is (because the key is the same name as the array) instead of just its fields. 2) Since spaces are not allowed in variable names, they are replaced in lines' leading identifiers by the $space_replace_char parameter, '_' by default. Hopefully someone will find this useful, if so drop me a line. Credit and thanks go out to the people who posted their code on this manual page, especially davidpk212 at gmail dot com and phpWalter at torres dot ws. function implode_parseable($inner_glue = "=", $outer_glue = "\n", $array = null, $prefix = "", $suffix = "", $space_replace_char = '_', $skip_empty = false, $current_loc = "", $recursion_level = 0){ return $prefix . implode_parseable_r($inner_glue, $outer_glue, $array, $space_replace_char, $skip_empty, $current_loc, $recursion_level) . $suffix; } function implode_parseable_r($inner_glue = "=", $outer_glue = "\n", $array = null, $space_replace_char = '_', $skip_empty = false, $current_loc = "", $recursion_level = 0) { if(is_array($array)){ $output = array(); foreach( $array as $key => $item ){ if ( is_array ($item) ){ //don't quote numeric indicies if(is_string($key)) $quoted_key = "\"" . $key . "\""; else $quoted_key = $key; // This is value is an array, go and do it again! $level = $recursion_level + 1; if($recursion_level == 0){ // can't have spaces in a variable name! $current_loc .= str_replace(' ', $space_replace_char, $key); $output[] = implode_parseable_r ($inner_glue, $outer_glue, $item, '_', $skip_empty, $current_loc, $level); //start the position tracker over after every run from level 0 $current_loc = ''; }else{ $current_loc .= "[" . $quoted_key . "]"; $output[] = implode_parseable_r ($inner_glue, $outer_glue, $item, '_', $skip_empty, $current_loc, $level); //remove the last index from the position tracker string after using it $current_loc = ereg_replace('\[[^]]*\]$', '', $current_loc); } } else{ // don't quote or []ify the base variable name, // but do for all else as appropriate if($recursion_level != 0){ if(is_string($key)) $key = "\"" . $key . "\""; $key = "[" . $key . "]"; } // echo "
"; // var_dump($item); // echo "
"; $skip_this = false; if($skip_empty && (!isset($item) || $item == NULL || $item == '')) $skip_this = true; //quote the item (which is the value of the array index) if it is a string if(is_string($item)) $item = "\"" . $item . "\""; if(!$skip_this) $output[] = $current_loc . $key . $inner_glue . $item; } } return implode($outer_glue, $output); }else{ return $array; } } Klába 31-May-2005 03:42 in case of value $item==0 but is set is necessary use function isset() function implode_assoc($inner_glue,$outer_glue,$array,$skip_empty=false){ $output=array(); foreach($array as $key=>$item) if(!$skip_empty || isset($item)){$output[]=$key.$inner_glue.$item;} return implode($outer_glue,$output); } killroy at g m a i l dot c o m 16-May-2005 11:29 Here is another variation on Chris' function. I added a $skip_empty parameter. if it's set to TRUE the result string will not contain keys whose values are empty. Great for building query_strings. If the parameter is not given it behaves like the original function: $a='1'; $b=''; $c='3'; INPUT: implode_assoc('=','&',array('a'=>$a,'b'=>$b,'c'=>$c),true); OUTPUT: a=1&c=3 INPUT: implode_assoc('=','&',array('a'=>$a,'b'=>$b,'c'=>$c)); OUTPUT: a=1&b=&c=3 function implode_assoc($inner_glue,$outer_glue,$array,$skip_empty=false){ $output=array(); foreach($array as $key=>$item) if(!$skip_empty || $item){$output[]=$key.$inner_glue.$item;} return implode($outer_glue,$output); } tshort at cisco dot com 29-Apr-2005 05:20 Correction: I meant "passed by value", not "pass by reference". My mistake. Passing by reference would speed up any of these functions by avoiding the copy necessary for "by value. Other solutions have problems with non-arrays as well. But it demonstrates that there are many ways to solve this problem. Adding checks for non-arrays and short arrays makes the solution less elegant, but safer. Other solutions should have included similar protections. function english_list($array, $oxfordComma=0) { if (!is_array($array)) return $array; if (count($array) <= 1) return join(", ", $array); $last = array_pop($array); return join(", ", $array) . ($oxfordComma ? "," : "") . " and " . $last; } Andy Morris 29-Apr-2005 03:27 It's always dangerous to give sweeping statements like "this will always work!". Your solution is much more elegant than mine, but perhaps it's a little too elegant for its own good! Try giving it an array with zero or one elements in it for example. You could say that folks shouldn't call it in that case, but you know folks... they like pushing the boundaries. :-) Perhaps you meant to say that the array can be altered inside the function because it is passed "by value" rather than "by reference", or is that just a mixture of terminology from my C++ upbringing? Passing by reference would imply that you could alter the array inside the function and have that alter its value outside. Passing by value implies that any changes inside the function affect the local function copy only. In PHP, the latter is clearly the case, unless a variable is explicitly declared as global. OK, that's my 2c. tshort at cisco dot com 28-Apr-2005 11:54 /* english_list() This one works with anything, since the array is passed by reference, modifying it in the function via pop has no effect on the array outside the function. But it can't be done on one line, because the array_pop() must occur before the join(). */ function english_list($array, $oxfordComma=0) { $last = array_pop($array); return join(", ", $array) . ($oxfordComma ? "," : "") . " and " . $last; } Andy Morris 28-Apr-2005 08:19 Similar to a previous note, but this works for any length array, plus also works for arrays with key strings instead of integer keys! I know it's not strictly an implode() example, but it concerns what you might be considering using implode() to help you to do achieve... " ; echo english_list ( array( "foo" ), 1 ). "
" ; echo english_list ( array( "foo" , "bar" ), 0 ). "
" ; echo english_list ( array( "a" => "foo" , "b" => "bar" , "c" => "foobar" ), 1 ). "
" ; echo english_list ( array( "foo" , "bar" , "foobar" , "barfoo" ), 0 ). "
" ; ?> memandeemail at gmail dot com 27-Apr-2005 04:06 /** * Like implode but with keys * * @param string[optional] $glue * @param array $pieces * @param string[optional] $hifen * @return string */ function implode_with_key($glue = null, $pieces, $hifen = ',') { $return = null; foreach ($pieces as $tk => $tv) $return .= $glue.$tk.$hifen.$tv; return substr($return,1); } davidpk212 at gmail dot com 14-Apr-2005 06:36 I made this function to create an english-readable list from an array. The optional parameter "oxfordcomma" indicates whether or not to use the Oxford comma (a comma before the "and"). Example: Would produce: foo, bar, foobar, and barfoo 02-Apr-2005 05:07 Here is another varriation on the below code. This is useful if you are trying to store data as a string to be returned to an array later. It allows unlimited nested arrays to be both stored and extracted, but does not print out as pretty. function implode_assoc_r2($inner_glue = "=", $outer_glue = "\n", $recusion_level = 0, $array = null) { $output = array(); foreach( $array as $key => $item ) if ( is_array ($item) ) { // This is value is an array, go and do it again! $level = $recusion_level + 1; $output[] = $key . $inner_glue . $recusion_level . $inner_glue . implode_assoc_r ($inner_glue, $outer_glue, $level, $item, $keepOuterKey); } else $output[] = $key . $inner_glue . $recusion_level . $inner_glue . $item; return implode($outer_glue . $recusion_level . $outer_glue, $output); } function explode_assoc_r2($inner_glue = "=", $outer_glue = "\n", $recusion_level = 0, $string = null) { $output=array(); $array=explode($outer_glue.$recusion_level.$outer_glue, $string); foreach ($array as $value) { $row=explode($inner_glue.$recusion_level.$inner_glue,$value); $output[$row[0]]=$row[1]; $level = $recusion_level + 1; if(strpos($output[$row[0]],$inner_glue.$level.$inner_glue)) $output[$row[0]] = explode_with_keys_a($inner_glue,$outer_glue,$level,$output[$row[0]]); } return $output; } php.net {at} nr78 {dot} net 30-Mar-2005 05:50 Also quite handy in INSERT statements: "John" , "surname" => "Doe" , "email" => "j.doe@intelligence.gov" ); // build query... $sql = "INSERT INTO table" ; // implode keys of $array... $sql .= " (`" . implode ( "`, `" , array_keys ( $array )). "`)" ; // implode values of $array... $sql .= " VALUES ('" . implode ( "', '" , $array ). "') " ; // execute query... $result = mysql_query ( $sql ) or die( mysql_error ()); ?> stefan 03-Mar-2005 07:47 Even handier if you use the following: Geoff Eby 03-Mar-2005 06:29 A handy use of implode in a MySQL query phpWalter at torres dot ws 14-Sep-2004 09:45 Chris Ross (17-Aug-2004 11:18) gave us a great function 'implode_assoc'. But it didn't handle multi-level array. I know, a few others here added this "feature", but... I've modified Chirs' function to be recursive. Hope it helps someone. /** * Method to recursivly implode a multi-dimensional array * Orginal: Chris Ross - 17-Aug-2004 * Modified: Walter Torres - 09-14-2004 **/ function implode_assoc_r($inner_glue = "=", $outer_glue = "\n", $array = null, $keepOuterKey = false) { $output = array(); foreach( $array as $key => $item ) if ( is_array ($item) ) { if ( $keepOuterKey ) $output[] = $key; // This is value is an array, go and do it again! $output[] = implode_assoc_r ($inner_glue, $outer_glue, $item, $keepOuterKey); } else $output[] = $key . $inner_glue . $item; return implode($outer_glue, $output); } Chris Ross 17-Aug-2004 09:18 I took static's implode_with_keys, and converted into something I considered a little more programatically useful. I would argue that this sort of functionality should maybe be added to PHP. $item ) $output [] = $key . $inner_glue . $item ; return implode ( $outer_glue , $output ); } ?> It's the same as static's, really, but allows you to join the keys to the values with any arbitrary string, rather than hard-coding a '='. john 27-Apr-2004 12:15 hi, to prevent implode from putting the zero at the end, I use ksort(). example: $val[1]="one"; $val[2]="two"; $val[0]="zero"; ksort($val); echo implode(":",$val); //will return "zero:one:two" chris at hitcatcher dot com 28-Oct-2003 11:50 I found it neccesary to create a function that joins the contents of a single dimension from a 2-d array. Here's the code in case anyone else should need to do the same: $value ){ if(isset( $value [ $dimension ])){ $rtn [] = $value [ $dimension ]; } } return join ( $glue , $rtn ); } ?> The dimension argument can be a positive integer or a named index. Here is an example: 'a' , 'three' => 1 ), array( 1 => 'b' , 'three' => 2 ), array( 1 => 'c' , 'three' => 3 ), array( 1 => 'd' , 'three' => 4 ), array( 1 => 'e' , 'three' => 5 )); print "
" ; print_r ( $testarray ); print "
" ; print join_2d ( ", " , $testarray , 1 ) . "
" ; print join_2d ( ", " , $testarray , 'three' ) . "
" ; ?> dan at danposluns dot com 23-Aug-2003 09:04 *** MULTI-DIMENSIONAL ARRAY IMPLODE *** First of all, it should be noted that the function in the previous note is not technically correct, as it glues the outside of the first piece. This is the problem faced by any function that wants to construct a set out of an array without the overhead of handling the boundary indexes. It also doesn't preserve the dimensional architecture. Use this function when you want to call implode() on a multi-dimensional array and want the resulting string to preserve the architecture of the different dimensions. For example: array ( 5, array (2, 4, 6), array (3, 6, 9, array (12))) would be reduced to: [ 5, [ 2, 4, 6 ], [ 3, 6, 9, [ 12 ] ] ] Note that this does not preserve key values. If you need those, you are probably better off using serialize() and then replacing the tokens with your own symbols using the string functions. Anyway, here is the code: function mdImpode($x, $y) { $a = (is_array($x)) ? '[ ' . array_reduce($x, 'mdImplode') . ' ]' : $x; $b = (is_array($y)) ? '[ ' . array_reduce($y, 'mdImplode') . ' ]' : $y; return $a . ', ' . $b; } Then to call it, use: $result = '[ ' . array_reduce($pieces, 'mdImplode') . ' ]'; Note that you have to make manual changes if you want different glue or set symbols. There may be a more elegant solution, but this should be a good compromise between efficiency and simplicity (the manual says that array_reduce is iterative, so this should be pretty speedy). gregrahkin 19-Jun-2003 08:10 This function will implode a multi-dimension array function implode_r ($glue, $pieces){ $out = ""; foreach ($pieces as $piece) if (is_array ($piece)) $out .= implode_r ($glue, $piece); // recurse else $out .= $glue.$piece; return $out; } james at globalmegacorp dot org 31-May-2003 05:13 As a followup to the implode_with_keys function posted by 'static', here's a corresponding explode_with_keys function I wrote: function explode_with_keys($seperator, $string) { $output=array(); $array=explode($seperator, $string); foreach ($array as $value) { $row=explode("=",$value); $output[$row[0]]=$row[1]; } return $output; } ulderico at maber dot com dot br 07-Oct-2002 08:39 'Implode' does not implodes recursively... It might quite useful implode recursively when you get a many Arrays values with keys that replaces themselves as: http://server/file.php?arg[1]=123&arg[2]=312&arg[3]=543&arg[2]=abc If you build this URL progressively it would a great a idea that the newest value indeed took the place of any older ones, thus: http://server/file.php?arg[1]=123&arg[3]=543&arg[2]=abc would be a better option; If one uses $_SERVER['REQUEST_URI'], this sanitation would not happen, the URL string would be greater and greater everytime. With implode_r (see below) it becomes easier to build a "sanitised" URL, the one that less likely will overflow the browser. $URL = $_SERVER['PHP_SELF']; $tmp = implode_r("&", $_REQUEST); /* So as to allow to get ANY VALUE (G/P) from the Browser... */ $URL .= "?".$tmp; /* implode_r */ function implode_r($glue, $array, $array_name = NULL){ while(list($key,$value) = @each($array)) if(is_array($value)) $return[] = implode_r($glue, $value, (string) $key); else if($array_name != NULL) $return[] = $array_name."[".(string) $key."]=".$value; else $return[] = $key."=".$value; return(implode($glue, $return)); } sorry I couldn't format the code. Cedric at isoca dot com 11-Jul-2002 08:39 Implode with an unset array will made a warning and fail, but is ok with an empty array. So if you don't trust the content of the array, allways initialize it before : $param = array(); [...] echo implode('&', $param); static 14-May-2002 10:43 The one thing missing with this function is a way to add the keys. So I wrote this little function: function implode_with_keys($glue, $array) { $output = array(); foreach( $array as $key => $item ) $output[] = $key . "=" . $item; return implode($glue, $output); } php at woodenpickle dot com 15-Mar-2002 08:55 Hey, I found a good use for implode() today. It came from a need to have a . This turns $state into an array as you may know. I then, later on in the script, did this: $count = count( $state ); if( $count > 1 ) { $states = implode( "'.'", $state ); $result = $database->query( "SELECT * FROM currentOrders WHERE date>=$from AND date <=$to AND state IN ('$states')" ); } //This takes care of multiple states, but if the user sent only one state, I catch it here: foreach( $state as $value ); if( $value ) $result = $database->query( "SELECT * FROM currentOrders WHERE date>=$from AND date<=$to AND state='$value'" ); else //This one will catch the ALL states option if they choose that. $result = $database->query( "SELECT * FROM currentOrders WHERE date>=$from AND date<=$to" ); Anyway, I thought I'd post this up here in case it might help someone. Or maybe someone could figure out a better way and enlighten us all.. Have fun.. Bob add a note join htmlspecialchars Last updated: Mon, 12 Feb 2007 show source | credits | sitemap | contact | advertising | mirror sites Copyright © 2001-2007 The PHP Group All rights reserved. This mirror generously provided by: PACOnet Last updated: Thu Mar 01 05:34:41 2007 EET