我最近工作很多表單和決定做一個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