Bana verilmesi uyarı: foreach ile sorun mu yaşıyorsunuz

6 Cevap php

Ben bu var:

foreach ($country as $value){

Print_r kullanarak $ ülkenin içeriği şudur:

Array

Ben POST değişkenler tüm print_r Ancak, benim tek dizi olarak ülke ziyade yukarıda anlaşılacağı gibi bir dizi içinde bir dizi gösterir?

Array ( 
    [entry] => http://www.google.com
    [SelectLocation] => Canada
    [country] => Array ( 
        [0] => AL
        [1] => AS 
    )
    [type] => country
    [destination] => http://yahoo.co.uk
    [default] => http://yahoo.com
    [loginsubmit] =>
)

Ne oluyor?

Tüm teşekkürler

Update

Ben bunu yaptım:

$country = sanitize($_POST['country']);

Yani $ _POST ['ülke'] içeriğini doğru, $ ülkedir?!

6 Cevap

Tamam, benim sterilize fonksiyon korkunç oldu. Ben problme sovled var. Bu işlev sadece dizeleri denetler beri diziler atmak gibiydi! Özür dilerim herkese. :)

Eğer register_globals (POST sizin $ ülke değişkeni yaratacak olan) üzerinde olmasını bekliyorduk ama bu ayar üzerinde değil gibi geliyor.

Yani, seçenekler şunlardır:

  1. $ Yerine ülkenin $ _POST ['ülke'] (iyi fikir) kullanın.
  2. (bad idea!) Register_globals açın

Eğer $_POST['country'] yerine sadece düz ihtiyacı yok emin misin $country?

Tamam .. Bu düz almak sağlar

Böyle bir $ _POST dizi var?

Array ( 
   [entry] => http://www.google.com
   [SelectLocation] => Canada 
   [country] => Array ( 
                        [0] => AL 
                        [1] => AS 
               ) 
   [type] => country 
   [destination] => http://yahoo.co.uk 
   [default] => http://yahoo.com 
   [loginsubmit] => 
)

Hangi bir foreach döngü göndermeye çalışıyorsunuz:

foreach($_POST['country'] as $value)
{
    echo $value . "<br>";
}

ve çıkış olmalıdır

AL
AS

Bu doğru mu?

Nerede $country geliyor? Eğer $_POST değişkenleri geçerli kapsamı içine otomatik-ayıklanır olduğunu varsayıyoruz? Değiller çünkü. Belki de bunun yerine bu istiyorsun?

foreach ( $_POST['country'] as $value) {

Burada herhangi bir sorun görmüyorum:

$country = $_POST['country'];
foreach ($country as $value){
    echo $value . '<br />';
}

$ _POST Dizi ülke anahtarı için bir dizi içerdiğinden karıştı iseniz, açıklama PHP bir dizi olarak koleksiyonu alır sağlayan HTML adı özniteliği, sonra köşeli parantez olduğunu:

<select name="country[]" multiple="multiple">
...
</select>

ya da belki de:

<input type="checkbox" name="country[]" value="US"/>
<input type="checkbox" name="country[]" value="UK"/>