Hata Nasıl Dur etmeyin ... Sunucu günlükleri Up gösteriliyor?

3 Cevap php

Ben bir hata alıyorum ve ben ancak herhangi bir anlayış ile aklınıza gelebilecek her şeyi google'dan. Belki gözleri yeni bir dizi ile yardımcı olabilir.

Ben nesneleri bir dizi döndüren bir işlevi var. Bu işlevi çağıran kod sonra bu dizi aracılığıyla döngüsü ve her nesne ile yapmak gerekeni yapar. Bu HTML tükürür zaman görsel olarak iş gibi görünüyor, ancak sunucu günlükleri hala bir hatayı "foreach için verilen geçersiz argüman ()" verir. Evet, bunun teknik olarak çalıştığını bu harika, ama bu hata artık pop up istemiyorum. Düşünceler?

<?php

// The class whose method returns an array of library_Label objects
class library_Label
{
  public $id = null;
  public $name = null;

  public function getChildren()
  {
    // $children is declared earlier
    return $children;
  }
}


// main code
$columns = new library_Label(1);
foreach ($columns->getChildren() as $label) echo $label->Name;

?>

3 Cevap

Bu benim çözüm bu durumu değiştirmek için her zaman, oldukça yaygındır:

foreach ($columns->getChildren() as $label) echo $label->Name;

karşı

$children = $columns->getChildren();
if (is_array($children)) foreach ($children as $label) echo $label->Name;

Tüm durumları kapsamalıdır.

You can expand it karşı a full if statement with braces as well and then include an else block karşı handle the situation when children is empty if you want karşı.

Eğer kullandığınız hangi dili söylemiyorum, ama bu bir PHP hatası gibi görünüyor. Eğer öyleyse, kontrol PHP'nin error reporting levels. Eğer sunucu günlükleri içine diğer hataları dökümü yok böylece muhtemelen aslında olsa da, php.ini değerlerini değiştirmek gerekir.

Tabii ki, bu hata ne olursa olsun atılan neden bulmak isteyeceksiniz.

Uyarı bir dizi değil, bir değişken üzerinde foreach yapmaya çalıştığınızda "Invalid argument supplied for foreach()" olur.

Kontrol etmek gerekir getChildren() aslında is bir dizi dönüş değeri.

Eğer yapıcı kaynağını ne de aslında $children oluşturur kodunu ne sağladık beri biz bağlamda bu söyleyemem. O gelecek olsaydı, o size yardım etmek daha kolay olabilir.

Eğer deneyebilirsiniz bir şey "print_r($columns->getChildren())" ile foreach çalıştırmadan önce dönüş değerini yazdırıyor. Bu bir dizi ya da olmadığı konusunda net bir gösterge olmalıdır.

Ben yok, boş diziler de bu uyarıyı neden olacağı net devlet bazı siteler değil - ben de, dizi boş olup olmadığını görmek için kontrol empty() veya count() kullanarak öneririm sınamak için evde bir PHP ortamı var.