Sözdizimi aşağıdaki dizi tür üzerinden bir $ _POST öğeye erişmek nasıl?

8 Cevap php

- Ben dört POST değişkenleri, ancak ikinci bir gönderirseniz Ben name="" etiketi olacağını bilmiyorum; Ben nasıl erişebilir? I $_POST[1] ya da kullanabilir miyim?

8 Cevap

İşte iç işaretçileri kullanarak bir çözüm var:

if(count($_POST) > 1){ // just a check here.
  reset($_POST); // reset the pointer regardless of its position
  $second_value = next($_POST); // get the next value, aka 2nd element.
}

Sayısal dizin getirmedi arada: PHP $ _POST ve $ _GET ilişkilendirilebilir diziler vardır! Onlar $_POST[0] veya $_POST[1] gibi bir şey desteklemez. Onlar ayarlı değil çünkü null dönecektir. Bunun yerine $_POST["name"] çalışacak.

PHP Manual: ". Bir associative array, HTTP POST (veya GET) yöntemiyle geçerli komut geçirilen değişken"

foreach( $_POST as $key => $value ){
    if( is_int($key) ) //do something with $value
}

Eğer diğer $ _POST değerler formları (sayılar değildir, yani anahtarlar) adları vardır biliyorsanız bu işe yarayacak.

Bunun üzerinden döngü yapabilirsiniz:

foreach ($_POST as $k => $v) {
  if (substr($k, 0, 3) == 'id_') { 
    // do stuff
  }
}

Ama gerçekten arama için kriterler ne bağlıdır. Yukarıdaki örnekte "id_" ile başlayan tüm POST değişkenleri çekiyor. Eğer farklı / daha iyi kriterleri varsa bunu basit yapmak mümkün olabilir.

You can Eğer array_values() İlk kullanarak dönüştürmek ise.

Example

<?php

$a = array(
        "first key" => "first value",
        "second key" => "second value",
);

$v = array_values($a);
echo "First value: {$v[0]}\n";

?>

Output

$ php -f a.php
First value: first value

EDIT: ilk hata işaret yorumcu için teşekkürler.

ben bunun için kullanışlı bir işlevi var

function nth($ary, $n) {
     $b = array_slice($ary, intval($n), 1); 
     return count($b) ? reset($b) : null;
}

sizin durumunuzda

$foo = nth($_POST, 1);

kullanmak

<?php
print_r($_POST);
?>

Bu size bilmiyorum alanın önemli olan ne bir fikir verecektir.

Bir kopyasını oluşturun:

$vars = $_POST;

Bildiğiniz adlarını kaldırmak:

unset( $vars[ "known variable 1" ] );
unset( $vars[ "known variable 2" ] );

Tüm bu ihtiyacınız değişkenler olduğunu kalır: array_values ​​onları ayıklamak veya foreach ile onları numaralandırmak, ne olursa olsun.

Eğer $ _POST dizisinde dizi anahtarları bilmiyorsanız her biri için basit bir hile yapacak

foreach($_POST as $key=>$value):
   print 'key'.$key.' value'.$value
endforeach;

Ama siz bunları işleme üzerine planlıyorsanız, post değişkenleri ne bilmek için tavsiye edilir.