php de bir array dizisindeki her elemanin basina bir kelime eklemek istiyorum. Bunu nasil yapabilirim ?
Kısa cevap: Her elemanın başına bir kelime eklemek için en kolay yollar array_map, array_walk veya foreach kullanmaktır; örneğin array_map ile yeni bir dizi döndürür veya foreach/array_walk ile mevcut diziyi yerinde (in-place) değiştirebilirsiniz.
Açıklama ve örnekler
Yöntem 1: array_map (yeni dizi döndürür)
Aşağıdaki örnek, orijinal diziyi değiştirmeden başına bir kelime eklenmiş yeni bir dizi oluşturur.
Kodu kullanma örneği:
<?php
// array_map ile prefix ekleme örneği
$prefix = 'ön-';
$array = ['elma', 'armut', 'muz'];
$result = array_map(function($v) use ($prefix) {
return $prefix . $v;
}, $array);
print_r($result);
Notlar:
- array_map tek bir diziyle kullanıldığında anahtarları korur (associative array için de geçerli).
- Yeni bir dizi döner; orijinali değiştirmek istemiyorsanız uygundur.
Yöntem 2: foreach ile yerinde değiştirme
Mevcut diziyi değiştirmek isterseniz referans kullanarak basit ve hızlıdır.
Kodu kullanma örneği:
<?php
// foreach ile orijinal diziyi yerinde değiştirme
$prefix = 'ön-';
$array = ['elma', 'armut', 'muz'];
foreach ($array as &$value) {
$value = $prefix . $value;
}
unset($value); // referans değişkeni temizle - önemli!
print_r($array);
Notlar:
- foreach ile & (referans) kullanıldığında diziyi doğrudan değiştirirsiniz.
- Döngüden sonra unset($value) yapmayı unutmayın; aksi halde sonraki kullanımlarda yan etkiler olabilir.
Yöntem 3: array_walk (yerinde değiştirir)
array_walk elemanları referansla parametre olarak alır ve orijinal diziyi değiştirir.
Kodu kullanma örneği:
<?php
// array_walk ile yerinde prefix ekleme
$prefix = 'ön-';
$array = ['elma', 'armut', 'muz'];
array_walk($array, function(&$v, $k) use ($prefix) {
$v = $prefix . $v;
});
print_r($array);
Notlar:
- array_walk fonksiyonu anahtarı da alır (gerekiyorsa kullanılabilir).
- Orijinal dizi üzerinde değişiklik yapar.
Diğer dikkat edilmesi gerekenler / ipuçları
- Eğer dizi elemanları sayısal değilse (ör. null veya array) önce string’e çevirmeniz gerekebilir: $prefix . (string)$value.
- Çok boyutlu dizilerde (her eleman yine dizi ise) döngü veya recursive işlemler gerekir.
- Performans açısından büyük dizilerde foreach genellikle en hızlıdır, fakat okunabilirlik açısından array_map/array_walk tercih edilebilir.
TERİMLER:
array_map: Bir dizinin her elemanına uygulanan fonksiyon sonucu yeni bir dizi döndüren PHP fonksiyonu.
array_walk: Dizinin elemanlarını referansla çağırıp orijinal diziyi değiştirmeye yarayan PHP fonksiyonu.
closure: Anonim fonksiyon; genelde function(…) use(…) { … } şeklinde yazılır.
foreach: PHP’de diziler üzerinde yineleme yapmak için kullanılan yapı.
referans (&): PHP’de bir değişkenin bellekteki aynı değere işaret etmesini sağlar; foreach ile kullanıldığında diziyi yerinde değiştirmek için kullanılır.
İstersen örnek dizine göre (associative, numeric, iç içe) spesifik bir kod yazayım.