我最近一直在处理表单,并决定制作一个 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 变成:
Array
(
[forms] => Array
(
[image] => Array
(
[0] =>
[8] =>
[1] =>
[9] =>
)
)
)
这里的问题是,如果你添加一个“image”作为$name,那么它必须像posted一样添加到数组中,所以它将是array(image=>data),如果你输入image[],那么它将是数组(图像=>数组(0=>数据))。
我发现我的代码太庞大了,我找到了 parse_str,它解析“图像 []”,但它没有为我服务,因为我需要单独添加名称......
这个功能可以做得更优雅吗?
澄清:
有没有更好的方法将“name[]”添加到数组中,就好像它是要添加到数组中的名称列表的一部分一样。
所以我需要一个不会覆盖 $array 的 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
)
)
这将真正简化上述功能!