ekler ve artırım işlevini basitleştirmek yardımcı "resim []"

0 Cevap php

Ben son zamanlarda formları ile çok çalışan ve kendimi yinelenen görmek bazı yönlerini basitleştirmek için bir php script, ben yarattık tam ucubeyi post olmaz yapmaya karar verdi, ama bunun yerine bana basitleştirmek yardım isteyecektir oldum Mümkünse aşağıdaki kod:

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);

bunun içine $ dizi yapar:

Array
(
    [forms] => Array
        (
            [image] => Array
                (
                    [0] => 
                    [8] => 
                    [1] => 
                    [9] => 
                )

        )

)

burada sorun $ isim gibi bir "görüntü" eklerseniz Yayınlanan sanki, o diziye eklenmesi gerekir ki, böylece görüntü [] girerseniz, array (image => data) olacaktır, o dizi (image => array (0 => data)) olacaktır.

Benim kod yol çok hantal buluyorum, ben "resim []" ayrıştırma, parse_str buldum, ama ayrı ayrı eklenecek isimler ihtiyaç olarak bana hizmet etmedi ...

Bu işlev daha şık yapılabilir mi?

clarification:

Eklemek için daha iyi bir yolu var mı "isim []" Bir diziye bu diziye eklenecek adları listesi parçası sanki.

so I need a parse_str replacement that does not overwrite the $array. Example:

$array = array();
parse_str('image[]=test',$array);
parse_str('image[]=test1',$array);
parse_str('image[]=test2',$array);

ancak sonuç gibi görünüyor:

Array
(
    [image] => Array
        (
            [0] => test2
        )

)

ama gibi bakmak gerekiyor:

Array
(
    [image] => Array
        (
            [0] => test
            [1] => test1
            [2] => test2
        )

)

Bu gerçekten yukarıdaki işlevini basitleştirmek olur!

0 Cevap