Neden sonuç üzerinde çalıştırmak için bir değişkene PHP'nin sonuna () dizi işlevinin sonucu atamanız gerekir?

3 Cevap php

Ben aşağıdaki gibi bir dizinin muhtemelen boş geçen girişi silmek için denedim ama hata alıyorum: "yazma bağlamında fonksiyon dönüş değeri kullanmak değil miyim":

  if (empty(end($crontabEntryList))) {
    array_pop($crontabEntryList);
  }

Ben ilk (altta gibi) bir değişkene end dönüş değerini atarsanız ben boş eğer son girdiyi silmek mümkün duyuyorum. Başına manual entry for end() bu "son öğenin değerini veya boş dizi için FALSE döndürür." Googling sayesinde ben buldum a possible explanation: booleans "yazılabilir" değildir.

Ancak o zaman bunun bir boolean iade edilebileceğini possible olduğu sırf bu hata benim özel bağlamında, geri döndü, ve muhtemelen others documented here on SO olur gibi görünüyor. Benim örneği dizi kesinlikle not, boş ve dolayısıyla ziyade yanlış olduğunu, çünkü, end () "son öğenin değerini döndürür".

Benim varsayımlar doğru mu? Bu durumda, bu PHP gevşek yazdığınız doğaya aykırı değil mi? Dizinin son elemanı "yazılabilir değil" çünkü Yoksa değil mi? Bu durumda, ne tam PHP "yazma bağlam" teşkil?

  $last = end($crontabEntryList);
  if (empty($last)) {
    array_pop($crontabEntryList);
  }

3 Cevap

boş () böyle garip. Ben sadece kabul ve çevresinde mümkünse (sağlanan solüsyon ile). Çalışmak öğrendim

Eğer sadece bir dizi boş değerleri temizlemek için çalışıyorsanız, array_filter() deneyin

Ben sadece (sonunda dönüş değeri üzerinde olumsuz bir çek kullanarak önerebilirsiniz?) Gördüğüm kadarıyla, ucu () son öğenin değerini veya boş FALSE döndürür ya. Peki yerine boş ile test etmek için başka bir değişken oluşturmak için ekstra kod kullanarak, sadece sonunda geri dönüşü testi ():

/* Edited */
if(!(trim(end($crontabEntryList)))) {
   array_pop($crontabEntryList);
}

Ben dizeleri bir dizi ile benim sistemde Bu test ettik ve sizin istediğiniz etkiye sahip görünüyor.