我最近工作很多表单和决定做一个PHP脚本简化某些方面,我看到自己重复,我不会发布我已经创建的,而是我会问你的全部怪物帮我简化下面的代码,如果可能的:帮助简化功能,增加和增量“形象[]”到一个数组
function add($name,$input,&$array)
{
$p = explode('[',$name);
if(isset($p[1]))
{
list($key) = explode(']',$p[1]);
if(ctype_digit($key))
{
$array['forms'][$p[0]][$key] = $input;
}else{
$array['forms'][$p[0]][] = $input;
}
}else{
$array['forms'][$name] = $input;
}
}
$array = array();
add('image[]','',$array);
add('image[8]','',$array);
add('image[1]','',$array);
add('image[]','',$array);
echo '<PLAINTEXT>';
print_r($array);
它使$数组:
Array
(
[forms] => Array
(
[image] => Array
(
[0] =>
[8] =>
[1] =>
[9] =>
)
)
)
这里的问题是,如果你添加一个“图像”作为$名称,那么它必须被添加到数组中,就像它是张贴的,所以它w如果你输入image [],那么它将是数组(image => array(0 => data))。
我找到我的代码是太笨重,我发现parse_str,这解析“形象[]”,但我需要的名字被单独添加它并没有为我...
灿这个功能会变得更优雅吗?
澄清:
有没有更好的方式来增加“名称[]”到一个数组,如果它是名称的列表的一部分将被添加到阵列中。
,所以我需要一个parse_str更换不覆盖$阵列。 例子:
$array = array();
parse_str('image[]=test',$array);
parse_str('image[]=test1',$array);
parse_str('image[]=test2',$array);
但结果是这样的:
Array
(
[image] => Array
(
[0] => test2
)
)
但需要看起来像:
Array
(
[image] => Array
(
[0] => test
[1] => test1
[2] => test2
)
)
这将真正简化上述功能!
为什么不能只使用'$ array ['forms'] ['images'] [1] ='';'来访问元素? – Hannes 2010-10-21 11:57:52
为什么要使PHP数组呢?为什么不把它传递给HTML呢? – 2010-10-21 12:02:22
虽然您将在POST数组中拥有相同的图片(0-8-1-9)。我希望这是你想要从这个不寻常的命名 – 2010-10-21 12:04:08