note 84644 added to function.implode
| From: | theuedimaster at gmail dot com | Date: | Wed, 23 Jul 2008 13:36:13 +0000 |
| Subject: | note 84644 added to function.implode | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-142608@lists.php.net to get a copy of this message | ||
This is a recursive implode function that can be used on multi-dimensional arrays. The explode
function has also obeen included.
<?php
// Can implode an array of any dimension
// Uses a few basic rules for implosion:
// 1. Replace all instances of delimeters in strings by '/' followed by delimeter
// 2. 2 Delimeters in between keys
// 3. 3 Delimeters in between key and value
// 4. 4 Delimeters in between key-value pairs
function implodeMDA($array, $delimeter, $keyssofar = '') {
$output = '';
foreach($array as $key => $value) {
if (!is_array($value)) {
$value = str_replace($delimeter, '/'.$delimeter, $value);
$key = str_replace($delimeter, '/'.$delimeter, $key);
if ($keyssofar != '') $key = $key.$delimeter.$delimeter;
$pair = $key.$keyssofar.$delimeter.$delimeter.$delimeter.$value;
if ($output != '') $output .= $delimeter.$delimeter.$delimeter.$delimeter;
$output .= $pair;
}
else {
if ($output != '') $output .= $delimeter.$delimeter.$delimeter.$delimeter;
if ($keyssofar != '') $key = $key.$delimeter.$delimeter;
$output .= $this->implodeMDA($value, $delimeter, $key.$keyssofar);
}
}
return $output;
}
// Can explode a string created by corresponding implodeMDA function
// Uses a few basic rules for explosion:
// 1. Instances of delimeters in strings have been replaced by '/' followed by
delimeter
// 2. 2 Delimeters in between keys
// 3. 3 Delimeters in between key and value
// 4. 4 Delimeters in between key-value pairs
function explodeMDA($string, $delimeter) {
$output = array();
$pair_delimeter = $delimeter.$delimeter.$delimeter.$delimeter;
$pairs = explode($pair_delimeter, $string);
foreach ($pairs as $pair) {
$keyvalue_delimeter = $delimeter.$delimeter.$delimeter;
$keyvalue = explode($keyvalue_delimeter, $pair);
$key_delimeter = $delimeter.$delimeter;
$keys = explode($key_delimeter, $keyvalue[0]);
$value = str_replace('/'.$delimeter, $delimeter, $keyvalue[1]);
$keys[0] = str_replace('/'.$delimeter, $delimeter, $keys[0]);
$pairarray = array($keys[0] => $value);
for ($counter = 1; $counter < count($keys); $counter++) {
$pairarray = array($keys[$counter] => $pairarray);
}
$output = array_merge_recursive($output, $pairarray);
}
return $output;
}
?>
----
Server IP: 64.71.164.2
Probable Submitter: 76.216.132.35
----
Manual Page -- http://www.php.net/manual/en/function.implode.php
Edit -- https://master.php.net/note/edit/84644
Del: integrated -- https://master.php.net/note/delete/84644/integrated
Del: useless -- https://master.php.net/note/delete/84644/useless
Del: bad code -- https://master.php.net/note/delete/84644/bad+code
Del: spam -- https://master.php.net/note/delete/84644/spam
Del: non-english -- https://master.php.net/note/delete/84644/non-english
Del: in docs -- https://master.php.net/note/delete/84644/in+docs
Del: other reasons-- https://master.php.net/note/delete/84644
Reject -- https://master.php.net/note/reject/84644
Search -- https://master.php.net/manage/user-notes.php