Şahsen ikinci Gordon öneri sadece lambda (veya oluşturulan) işlevini ve ya do kullanmak istiyorum:
array_map(function($el) { return $el * 60; }, $input_array);
(PHP> = 5.3) veya
array_map(create_function('$el', 'return $el * 60;'), $input_array);
(PHP < 5,3)
Kesinlikle değerlerin çok katılmaktadırlar if() hantal hale gelebilir dizi çoğaltma için herhangi nedenlerini görmek; Eğer dikkatlice ile çalışma değilseniz de, (Ben ikinci kullanışlı olabilir) foreach kullanarak da tehlikeli olduğunu dikkat ... ve her seferinde başa hatırlamak zorunda çünkü o bakım (neyse yıldırıcı olabilir o kod üzerinde çalışıyorsunuz).Bu aşamada optimizasyon yapmak için herhangi bir nedeniniz yoksa (IE uygulamanızın hız sorunu yok), şimdi yapmayın ve array_map kullanma konusunda endişelenmeyin. Bakım kolaylığı hakkında düşünebilir ve gerçekten ihtiyacınız olduğunda daha sonra optimize edebilirsiniz.
başvuruyla gidip sonra tekrar foreach kullanırsanız Aslında, beklenmedik sonuçlara adım olabilir (aşağıdaki örneğe bakın ...)
$a=array('1','2','3');
foreach ($a as &$v) {
$v *= 60;
}
print_r($a);
foreach ($a as $v);
print_r($a);
Çıktı geçerli:
Dizisi ( [0] => 60 [1] => 120 [2] => 180 )
Dizi ( [0] => 60 [1] => 120 [2] => 120 )
Muhtemelen hayır ne ikinci döngüsünde bekliyoruz. Bu yüzden, olabildiğince genellikle foreach & byref'ten kaçındım.
Sana * * 60'a diziyi çarparak yerine 60'a PHP zamanı bölmek değil kabul var, henüz foreach veya özel işlevler kullanmak istemiyorsanız Gordon sağlanan array_map/bcmul çözüm için giderdim ? –
Tüm örnekleri deneyeceğim, sadece gelecekte nasıl yapılacağını biliyorum. Foreach döngü en basit gibi görünüyor. * = ve *? Arasındaki fark nedir? – Henryz
Henryz: $ a * = 6, $ a = $ a * 6 şeklindeki kısa biçimidir. 6 – lamas