• 23-12-2012, 23:59:03
    #1
    $ara2 = array('1','2','3','4',.............................,'300');
    $degis2 = array('10','20','30','40',.............................,'3000');
    ve

    str ireplace komutunu
    $veri2 = str_ireplace($ara2,$degis2, $veri2);
    şeklinde kullanıyorum. 1 yerine 10 yazmada sorun yokken ileri aşamalarda mesela 150 yerine 1500 yazmıyor da 1600 yazıyor.

    array ların sayısı count ile saydırdım baktım kesinlikle birbirine eşit. peki neden böyle yapıyor? çözümü olan var mı
  • 24-12-2012, 01:01:20
    #2
    150 yerine 1500 yazmaması gayet normal çünki 1 = 10, 5 = 50 olmuştur ve ortada 150 gibi bir sayı yoktur. $ara2 ve $degis2 dizi değişkenlerini tersine sıralayım 300 den aşağı 3000 den aşağı şeklinde yapman çözüm olabilir.
  • 24-12-2012, 09:39:58
    #3
    MaviTm adlı üyeden alıntı: mesajı görüntüle
    150 yerine 1500 yazmaması gayet normal çünki 1 = 10, 5 = 50 olmuştur ve ortada 150 gibi bir sayı yoktur. $ara2 ve $degis2 dizi değişkenlerini tersine sıralayım 300 den aşağı 3000 den aşağı şeklinde yapman çözüm olabilir.
    str replace dizinin her elemanı için baştan mı okuyup işlem yapıyor?
  • 24-12-2012, 11:31:28
    #4
    echo str_replace(array("10", "100", "1000"), array("1", "yüz", "bin"), "1000");
    bunun sonucu "yüz" oluyor. Çünkü "1000" içindeki "10" değişti ve "1000" "100" oldu. Daha sonra bir sonraki dizi anahtarının değerine geçildi. "100" içinde "100" arandı ve "yüz" olarak değiştirildi.

    Her anahtar için sıralı değiştirme yapıyor.

    Bu sebeple bazen alt alta replace işlemleri yapılır. Ya da karakter sayısı fazla olandan az olana doğru sıralama yapılır.

    str_replace(array("Mer", "er", "r"), array("1", "2", "3"), "Merhaba");
    gibi.

    Önce bulunan her "Mer" değişir, sonra bulunan her "er" sonra da bulunan her "r"
  • 24-12-2012, 19:02:31
    #5
    sonunda çözdüm
    Alıntı
    for ($i = 1; $i <= count($ara2) ; $i++ ) {
    $veri2 = str_ireplace($ara2[$i],$degis2[$i], $veri2);
    }
    şeklinde çözdüm