Php de diziyi stringe çevirmek dönüştürmek

Php ile dizileri String'e çevirmek için bir fonksiyon yazdım. Parametre olarak bir adet dizi (çok boyutlu olabilir) ve birde ayraç alır. Ayraç ($ayrac değişkeni) dizi elemanlarını stringe dönüştürürken elemanların birbirinden ayrılması içindir.Boşluk,nokta,yada hiçbirşey olabilir varsayılan olarak virgüldür.

Örnekte " / " kullandım.(Üç karakter)

function arr2Str($arr=array(),$ayrac=',')
{
 $str="";
 $keys=array();
 foreach($arr as $k=>$v)
 {
  $keys[]=$k;
 }
 $t=count($keys);
 if($t>0)
 {
  for($i=0;$i<$t;$i++)
  {
   if(is_array($arr[$keys[$i]]))
   {
    $str.= $ayrac.arr2Str($arr[$keys[$i]],$ayrac);
   }else
   {
    $str.= $ayrac.$arr[$keys[$i]];
   }
  }
 }
 unset($t,$arr,$keys);
 return trim($str,$ayrac);
}


Kullanımı:

echo arr2Str(array(array(0,1,2,'Üç'=>array(4,5,6))),' / ');

Çıktı:

0 / 1 / 2 / 4 / 5 / 6

Fonksiyon Ubuntu 11.04 üzerinde çalışan PHP Version 5.3.5-1 ve Apache/2.2.17 server üzerinde test edilmiştir.

Lafın özü php de diziyi string'e dönüştürmek, verilen çok boyutlu diziyi stringe çevirmek için bu fonksiyonu kullabilirsiniz.

Not: Eğer fonksiyonu kullanacağınız php dosyasınızda Türkçe karakter sorunu yaşarsanız, Dosyanızın utf-8 biçiminde kodlanmış olarak kaydedildiğinden ve aşağıdaki header bilgisini sayfanızın en üstüne eklenmiş olduğundan emin olun.

Recursive (Kendini çağıran bir fonksiyondur) Eğer fonksiyonun ismini değiştirip kullanmak isterseniz aynı işlemi fonksiyon içerisinde de gerçekleştirin aksi halde çalışmayacaktır.

header("Content-type:text/html; Charset=utf-8");

2 Yorum:

  1. Adsız

    Fonksiyon için teşekkürler.Ama sanırım http://php.net/manual/en/function.implode.php aynı işlevi görüyorlar ?

    10/25/2011  


  2. Dediğiniz gibi implode fonksiyonu dizi elemanlarını istenilen bir ayraç ile birleştirerek string türe dönüştürüyor.
    Fakat dizi çok boyutlu ise implode fonksiyonu tek başına yetersiz kalıyor. Benim yazımda kullandığım örneği implode fonksiyonu ile string türe dönüştüremezsiniz. Recursive bir fonksiyon hazırlayıp içerisinde implode kullanmanız gerekir. (Yada farklı bir senaryo kurgulayacaksınız)

    Ben yazıda hem kendi implode fonksiyonumu yazdım hemde çok boyutlu dizilerde sıkıntı olmaması için fonksiyonu recursive biçimde tasarladım.

    Dikkat ettiyseniz eğer, dizi elemanlarından herhangi birisinin anahtarında dizi olduğunda bile onun değerlerine alıp string türe dönüştürüyor.

    10/31/2011  


Yorumunuzu belirtebilirsiniz