PHP: İlk) boş dizisi ile tam bir dizi birleştirme veya (isset kontrol?

3 Cevap php

I should başka bir dizi ile birleştirilmiş olması, bir dizi dönmek birkaç işlevlere sahiptir.

However, sometimes there's nothing to return. What's the best scenario here?

  1. Boş bir dizi döndürür ve tam bir VEYA ile bu birleştirme
  2. Null döndürebilir, bu değişken kontrol, bir değişkende getiri depolamak ve daha sonra gerekirse birleştirmek.

(Bazen kısa rota hızlı değil, ve ben gerçekten array_merge bilmiyorum çünkü bu soruyorum) başlık altında yapar.

3 Cevap

Boş bir dizi dönmek. Sizin iki seçenekten karmaşıklığını karşılaştırın

  1. Boş bir dizi döndürür ve tam bir VEYA ile bu birleştirme
  2. Null döndürebilir, bu değişken kontrol, bir değişkende getiri depolamak ve daha sonra gerekirse birleştirmek.

Bir işlevi yazdığınızda, sizden başka kişiler (bu ne yaptığını geçerli hiç bir fikrim var 6 ileri ayın sizi dahil) kullanmak için gidiyoruz. Eğer boş dönerseniz, sizin işlevini kullanarak birisi bir dizi dönmek olmayabilir, bu yüzden her zaman onlar işlevini kullanın ardından is_array veya is_set bir sürü kendi değişkenleri sarmak için gereken bilmesi gerekir denetler. Bu yolda kodunu korumak için daha zor yol açar, ya da bir boş döndüğünde değil bir dizi döner zaman app / sistem çalışır çalışır, ama hata. Sizin işlevi her zaman bir dizi döndürür, insanların güvenli bir dizi bekliyor işlevlerine iletebilirsiniz. (Güçlü tip yaptırım bazı savunucuları, PHP nefret budur. Java gibi bir dilde bu etmez mutlu çünkü fonksiyonlar have şey belirli bir dönüş türü)

Performans size dikkat övgüye değer olduğunu, ancak genel olarak dizi işleme fonksiyonları inşa oldukça iyi ayarlanmış ve sadece zaman küçük bir yüzdesini darboğaz olacak. Gün kod çalıştıran gün, değişkenlerin değerini kontrol etmek ve bir sıfır eleman dizide birleştirilmesi performans faydaları önemsiz olacak.

Temiz API, kriter ile gitmek, ve sonra bir performans sorunu görmeye başlamak belirli durumlarda optimize.

Dönmek için hiçbir şey yoksa, sadece boş bir dizi döndürür. Bu en mantıklı geliyor.

Ben gitmek istiyorum ...

  1. Return an empty array if nothing went wrong

  2. Return false (or throw an exception) if an error occurred

Iken ... bu ekstra iş biraz yapmak zorunda anlamına gelecektir, muhtemelen daha iyi bir uygulamadır ve uzun vadede temettü ödeyecek. (Dönüş değeri ile array_merging düzgün görünüyor, ancak herhangi bir hata oluşma ihtimali yoktur sürece biraz şüpheli bulunuyor olabilir.)