PHP bir dizi üzerinden gitmek daha etkili yolu

5 Cevap

Ben bir dizi her değerini değiştirmek için bu yöntemi oluşturduk. Ben PHP çok yeni değilim, bu yüzden bunu yapmak için daha etkili bir yolu olması gerektiğini düşünüyorum.

İşte benim kod:

foreach($my_array as $key => $value)
{
     $my_array[$key] = htmlentities($value);
}

Bunu yapmak için daha iyi bir yolu var mı?

Şimdiden teşekkür ederim.

5 Cevap

Sen diziyi başvuru ve değiştirebilirsiniz

foreach ($array as &$value) {
    $value = $value * 2;
}

Muhtemelen array_map ile daha iyi olurdu

$my_array = array_map( 'htmlentities' , $my_array);

Eğer değer bir işlevi uygulamak ve değerine yeniden tayin etmek gerektiğinde, Galen's answer iyi bir çözümdür. Bu güzel, basit bir döngü gibi kolayca okumuyor olsa da, array_walk() kullanabilirsiniz.

Sadece dizideki her öğe, örneğin, ilkel bir değer atamak gerektiğinde, aşağıdaki çalışacaktır.

  • Lütfen tuşlar sayısal iseniz, kullanabilirsiniz array_fill():

    array_fill(0, sizeof($my_array), "test");
    
  • Eğer bir ilişkisel dizi kullanarak yapıyorsanız, muhtemelen gibi bir şey ile, array_fill_keys() kullanabilirsiniz:

    array_fill_keys(array_keys($my_array), "test");
    

Bir reference (& $ değer) olarak $ değer işaretlemek Eğer $ değerine yapmak herhangi bir değişiklik $ my_array karşılık gelen eleman etkisi olacaktır.

foreach($my_array as $key => &$value)
{
   $value = "test";
}

örneğin

$my_array = array(1,2,3,4,5,6);
foreach($my_array as &$value)
{
  $value *= 5;
}
echo join($my_array, ', ');

baskılar

5, 10, 15, 20, 25, 30

(Orijinal diziyi tutmak istiyorsanız array_map() da var.)

Sen array_fill, 0 ile başlayan ve uzunluğu olacak count($my_array) kullanabilirsiniz. Değil emin eğer bu olsa iyi.

Edit: Rob Hruska en array_fill_keys kodu daha iyi (hız, standartlar, okunabilirliği vb) olarak tanımlamak ne bağlı olarak muhtemelen daha iyidir.

Edit2: şimdi soru düzenlenmiş ettik beri özgün değeri tamamen değişmez, değiştirilmesi gerektiren olarak, bu seçenekler artık şimdi uygundur.