php değişken az argüman?

7 Cevap php

Ben 'someData' ile http://www.something.com/?somedata url bu tür siteler gördüm bazı 'adı anılmayan' değişkeninin değeri

Ben böyle bir şey nasıl yapabilirim? Ben biliyorum bütün geleneksel http://www.something.com/index.php?arg=somedata olduğunu

çok teşekkürler

7 Cevap

Bu değeri olmayan sadece bir değişkendir. Bunu kullanarak bu dizeyi alabilirsiniz list($value) = array_keys($_GET); - Sen $_GET dizide tam olarak bir değeri yoktur sağlamıştır varsayarak (count($_GET) === 1), aksi takdirde (bir hata alırsınız Eğer $count === 0) ya da istenmeyen bir davranış (halinde $count > 1).

Genellikle kullanarak tam sorgu dizesi erişebilirsiniz $_SERVER["QUERY_STRING"].

Her ana-akım web sunucusu değişken, ben% 100 Apache hakkında emin ve IIS hakkında eminim ki sağlar düşünüyorum.

Bu sadece bir boolean değeri için kısayol.

someData doğru = someData = 1 veya someData eşdeğerdir

Bu sunucu tarafı kontrol olduğunda, değişkenin varlığı kendisinin bir koşul yazmak için yeterli değildir.

if ( isset($_GET['somedata']) ) { 
    //do something
}

Eğer "the value of some 'unmentioned' variable" daha genel bir değeri olmayan bir sorgu parametresi olarak kabul edilir olarak gördükleri. Yani foo=bar&baz için foo değerine sahip bar ve baz (PHP değeri boş bir dize olur) hiçbir değeri yoktur.

Diğer cevaplar bu parametre adını erişen farklı yöntemler sağlayarak beri, burada benim iki sent. Sen key function. If no key is available, key null dönecektir kullanarak $_GET dizisinin ilk anahtarını alabilirsiniz.

Visiting ?somedata=somevalue

var_dump(key($_GET), $_GET);
/*
string(8) "somedata"
array(1) {
  ["somedata"]=>
  string(9) "somevalue"
}
*/

Visiting ?somedata

var_dump(key($_GET), $_GET);
/*
string(8) "somedata"
array(1) {
  ["somedata"]=>
  string(0) ""
}
*/

Visiting ?

var_dump(key($_GET), $_GET);
/*
NULL
array(0) {
}
*/

Muhtemelen url http://www.something.com/index.php?arg=somedata için http://www.something.com/?somedata dönüştürdü nerede (Apache mod_rewrite bakınız) yeniden URL çeşit kullanan

Lütfen belirli bir URL için sadece $ _GET dizi üzerinden yineleme yapabilirsiniz:

foreach ($_GET as $key => $value) {
    if ($key == 'somedata') {
        //do something
    }
}

Sen $ _GET ve tuşları parametreyi bulabilirsiniz.

Ayrıca array_keys($_GET) ile $ _GET gelen anahtarları ayıklamak.

Çoğu web sunucuları, web başından beri, dizinler için teslim edilecek varsayılan bir dosya adı tanımlamak için izin verir. Yani yüklerseniz http://example.com/ bu tür dosyayı vermektedir (genellikle index.html). Tam adı değişmiş olabilir ancak PHP destekli sistemlerde, normalde bu tür amaçlar için index.php kullanın. Apache:

http://httpd.apache.org/docs/2.2/en/mod/mod_dir.html#directoryindex

?somedata, bir değeri olmayan sadece bir değişken yaklaşık olarak (ya da, daha doğrusu, onun değeri boş bir dize). Sadece değişken ayarlı olup olmadığını bilmek gerekiyorsa kullanabilirsiniz:

<?php

if( isset($_GET['somedata']) ){
    // Do some stuff
}

?>