Bir Dizi A $ _GET giriş parametresi

6 Cevap php

Ben 3. parametre $_GET['value3'] bir dizi olması gerekiyordu bir komut dosyası, 3 parametre geçmek için çalışıyorum

$_GET['value1'] 
$_GET['value2'] 
$_GET['value3'] //an array of items

Bu gibi komut arıyorum: (value3, ben doğru olduğundan emin değilim benim sözdizimi haber)

http://localhost/test.php?value1=test1&value2=test2&value3=[the, array, values]

Sonra dizisi value3, üçüncü parametre üzerinden umarım döngü bir foreach kullanın

//process the first input $_GET['value1']

//process the second input $_GET['value2']

//process the third input $_GET['value3'] which is the array
foreach($_GET['value3'] as $arrayitem){
    echo $arrayitem; 
}

ama hata almak Invalid argument supplied for foreach()

Benim metodoloji doğru olup olmadığından emin değilim. Bazı Eğer türden bir şey yapıyor hakkında gitmek istiyorum nasıl açıklamak Can

6 Cevap

(Bu aynı şey olduğundan, bu konuda, ya da bir form değeri) "bir URL parametresi olarak bir dizi geçirerek" diye bir şey yoktur. Bu dizeler, ve bunun ötesinde onlara ne olur bir şey uygulama sunucusu içine inşa edilmiştir büyü olduğunu ve bu nedenle non-taşınabilir.

PHP &value3[]=the&value3[]=array&value3[]=values gösterimi automagically sizin için bir dizi olarak $_GET['value3'] yaratmak için destek olur, ama bu PHP özel ve mutlaka başka bir yerde çalışmıyor.

Ayrıca düz ileri olabilir ve bu gibi temiz bir URL için gidebilirsiniz: value3=the,array,values, ve sonra bir dizi oluşturmak için PHP komut explode(',', $_GET['value3']) kullanın. Tabii ki bu, bir ayırıcı karakter değerin parçası olamaz anlamına gelir.

Açıkça, HTTP üzerinden yapılandırılmış veri taşımak amacıyla yapılmış bir biçim kullanmak için (yani: json) ve ardından PHP tarafında json_decode() kullanın.

denemek

http://localhost/test.php?value1=test1&value2=test2&value3[]=the&value3[]=array&value3[]=values

Diziler için siz sorgu parametrelerini geçmesi gerekiyor

value3[]=abc&value3[]=pqr&value3[]=xyz

Siz de dize dizinin adını çevirebilirsiniz

?value1[a]=test1a&value1[b]=test1b&value2[c][]=test3a&value2[c][]=test3b

olacak

$_GET['value1']['a'] = test1a
$_GET['value1']['b'] = test1b
$_GET['value2']['c'] = array( 'test3a', 'test3b' );

http://php.net/manual/en/reserved.variables.get.php Check out the above link.. You will see how the GET method is implemented. What happens is that the URL is taken, it is delimited using '&' and then they are added as a key-value pair.

   public function fixGet($args) {
    if(count($_GET) > 0) {
        if(!empty($args)) {
            $lastkey = "";
            $pairs = explode("&",$args);
            foreach($pairs as $pair) {
                if(strpos($pair,":") !== false) {
                    list($key,$value) = explode(":",$pair);
                    unset($_GET[$key]);
                    $lastkey = "&$key$value";
                } elseif(strpos($pair,"=") === false)
                    unset($_GET[$pair]);

                else {
                    list($key, $value) = explode("=",$pair);
                    $_GET[$key] = $value;
                }
            }
        }
        return "?".((count($_GET) > 0)?http_build_query($_GET).$lastkey:"");
    }

Beri, onlar GET yöntemi dizi en geçemezse bir anahtar-değer çifti olarak eklenir ...

Aşağıdakiler de çalışmak:

http://localhost/test.php?value3[]=the&value3[]=array&value3[]=values

Bir daha gelişmiş bir yaklaşım PHP dizi seri ve bunu link yazdırmak olacaktır:

http://localhost/test.php?value3=a:3:{i:0;s:3:"the";i:1;s:5:"array";i:2;s:6:"values";}

, aslında, aynı zamanda çalışacak.