note 82626 deleted from ref.array by nlopess
| From: | nlopess@php.net | Date: | Sat, 19 Apr 2008 23:13:13 +0000 |
| Subject: | note 82626 deleted from ref.array by nlopess | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-138547@lists.php.net to get a copy of this message | ||
Note Submitter: alan at zeroasterisk dot com
----
Feel free to use the following function which takes a multi-dim array as an input and it returns
hidden <input/> elements, named with square brackets and ready to post.
<?php
/***
* makehiddeninputs()
* -- loops through a multi-dimensional array, and creates appropriate nested inputs
* @param $input mixed (array|string)
* @param $k_prefix string - usually can be left blank
* @param $isfinal bool - should be left as true
* @return string (all input fields as hidden)
* @author alan blount - http://zeroasterisk.com
*/
function makehiddeninputs($input,$k_prefix='',$isfinal=true) {
if (is_array($input)) {
$inputs = array();
foreach($input as $k => $v) {
if (!empty($k_prefix)) {
$newkey = $k_prefix.'['.$k.']';
} else {
$newkey = $k;
}
$r = $this->makehiddeninputs($v,$newkey,false);
if (is_array($r)) {
$inputs[] = implode('',$r);
} else {
$inputs[] = $r;
}
}
if ($isfinal) {
return implode('',$inputs);
} else {
return $inputs;
}
} else {
return ''.
'<input type="hidden" '.
'name="'.str_replace('"','\"',$k_prefix).'"
'.
'value=\''.str_replace("'","\\'",$input).'\'/>'.
'';
}
}
// example usage
$data_array = array(
'data'=> array(
'nest1'=> array('name'=>'alan','site'=>'http://zeroasterisk.com'),
'nest2'=> array('name'=>'bubba','site'=>'http://php.net'),
)
);
$inputs = makehiddeninputs($data_array);
// outputs hidden inputs with attributes like:
// name="data[nest1][name]" value="alan"
// name="data[nest2][name]" value="bubba"
?>