• 09-10-2021, 17:19:07
    #10
    SkyGhostAir adlı üyeden alıntı: mesajı görüntüle
    Şöyle: 'hide-desktop,hide-tablet,hide-mobile' şeklinde bir array içeriği var. Bunları html'de class ismi olarak kullanacağım için hide-desktop hide-tablet hide-mobile şeklinde yazılması lazım. Sanırım PHP'nin explode ile yapılıyor bu işlem ancak ilk defa yaptığımdan nasıl yapacağımı anlamadım?

    Şöyle yaptım olmadı:
    $cozulmusdize = explode( ' ', $cozulecekdize );
    echo ile $cozulecekdize'ye bakınca ekrana olması gerektiği gibi hide-desktop,hide-tablet,hide-mobile yazılıyor ancak echo $cozulmusdize yazınca Array yazıyor. Nerede yanlış yapıyorum?
    $cozulecekdize echo ile yazdırdığınızda "hide-desktop,hide-tablet,hide-mobile" dönüyorsa, uğraştığınız array değil string bir değer. sorunun başında array dediğiniz için cevap veren herkes haklı olarak oradan yürümüş.

    şunu deneyin;
    echo strtr($cozulecekdize, ',', ' ');
  • 10-10-2021, 03:08:11
    #11
    ghergedan adlı üyeden alıntı: mesajı görüntüle
    $cozulecekdize echo ile yazdırdığınızda "hide-desktop,hide-tablet,hide-mobile" dönüyorsa, uğraştığınız array değil string bir değer. sorunun başında array dediğiniz için cevap veren herkes haklı olarak oradan yürümüş.

    şunu deneyin;
    echo strtr($cozulecekdize, ',', ' ');
    Evet hocam aradığım çözüm buymuş. Dediğiniz gibi yapınca oldu. PHP terimlerine de alışmadığım için yanlış ifade kullanmışım belli ki. Değişkeni explode edince array oluyormuş, ben explode edip array yapmadan bunu yapamayacağız sanmıştım zira kullanım amacını da şimdi öğrenmiş oluyorum.

    Scarecrow adlı üyeden alıntı: mesajı görüntüle
    Hocam tamam dediğim implode fonksiyonu ile bunu yapabiliyorsunuz. Fakat içine biraz daha detay katmanız gerekli. Verilerinizin if ile değil otomatik array olarak geldiğini varsayıyorum şu an.

    $array = ["desktop", "tablet", "mobile"];
    $s = [];
    foreach($array as $val)
    {
        $s[] = "hide-{$val}";
    }
    
    echo implode(' ', $s);
    Çıktısı da: hide-desktop hide-tablet hide-mobile

    Ne gelirse gelsin başına hide ekleyerek yazar. Eğer solda yada sağda fazladan boşluk olursa ltrim, rtrim ile temizlersiniz.
    Array içeriğiniz eğer böyle gelmiyorsa ve işin içine bir de if giriyorsa yani kullanmak zorundaysanız o başka, o zaman basit bir algoritma kurmalısınız.

    Evet hocam böyle oldu ancak boşken hide- yazıyor ekranda. ["desktop", "tablet", "mobile"] yerine değişkeni ekledim, belki o yüzden oldu. Değişkene var_dump ile bakınca şöyle görünüyor:
    array (size=3) 0 => string 'desktop' (length=7) 1 => string 'tablet' (length=6) 2 => string 'mobile' (length=6)

    Bunun yerine explode etmediğim string haline aynı şeyi yapabilir miyiz? Yani var_dump ile baktığımda şöyle yazan haline:
    :string 'desktop,tablet,mobile' (length=21)
  • 10-10-2021, 03:52:44
    #12
    SkyGhostAir adlı üyeden alıntı: mesajı görüntüle
    Evet hocam aradığım çözüm buymuş. Dediğiniz gibi yapınca oldu. PHP terimlerine de alışmadığım için yanlış ifade kullanmışım belli ki. Değişkeni explode edince array oluyormuş, ben explode edip array yapmadan bunu yapamayacağız sanmıştım zira kullanım amacını da şimdi öğrenmiş oluyorum.




    Evet hocam böyle oldu ancak boşken hide- yazıyor ekranda. ["desktop", "tablet", "mobile"] yerine değişkeni ekledim, belki o yüzden oldu. Değişkene var_dump ile bakınca şöyle görünüyor:
    array(size=3) 0 => string 'desktop'(length=7) 1 => string 'tablet'(length=6) 2 => string 'mobile'(length=6)

    Bunun yerine explode etmediğim string haline aynı şeyi yapabilir miyiz? Yani var_dump ile baktığımda şöyle yazan haline:
    :string 'desktop,tablet,mobile'(length=21)
    Explode ile de yapabilirsiniz, başka şekilde de yapabilirsiniz. Explode etmek istemiyorsanız da şu şekilde de işinizi görür diye düşünüyorum. Mantıklı ve basit bir kod.

    $array = preg_split("[\,]", "desktop,mobile,tablet");
    $s = [];
    foreach($array as $val)
    {
        if(strlen($val))
        {
            $s[] = "hide-{$val}";
        }
    }
    
    echo implode(' ', $s);
  • 11-10-2021, 17:44:13
    #13
    Scarecrow adlı üyeden alıntı: mesajı görüntüle
    Explode ile de yapabilirsiniz, başka şekilde de yapabilirsiniz. Explode etmek istemiyorsanız da şu şekilde de işinizi görür diye düşünüyorum. Mantıklı ve basit bir kod.

    $array = preg_split("[\,]", "desktop,mobile,tablet");
    $s = [];
    foreach($array as $val)
    {
        if(strlen($val))
        {
            $s[] = "hide-{$val}";
        }
    }
    
    echo implode(' ', $s);
    Aynen hocam bu şekilde işimi gördü ekstra işlem yaptırmaya gerek kalmıyor. Son olarak bir şey daha soracağım, bu işlemin tersini nasıl yaptırabiliriz? var olduğunda hide- ekleyip yazıyor ya, her biri için varsa yazmasın yoksa yazsın şeklinde?
  • 11-10-2021, 18:56:53
    #14
    SkyGhostAir adlı üyeden alıntı: mesajı görüntüle
    Aynen hocam bu şekilde işimi gördü ekstra işlem yaptırmaya gerek kalmıyor. Son olarak bir şey daha soracağım, bu işlemin tersini nasıl yaptırabiliriz? var olduğunda hide- ekleyip yazıyor ya, her biri için varsa yazmasın yoksa yazsın şeklinde?
    $s variable'ın üstüne if preg_match koyun, şu işinizi görür.

    Test etmedim fakat çalışır büyük ihtimalle.
    Editör sıkıntısı oluyor şuradan alın kodları: https://pastebin.pl/view/raw/faf825b6
  • 11-10-2021, 19:44:07
    #15
    Scarecrow adlı üyeden alıntı: mesajı görüntüle
    $s variable'ın üstüne if preg_match koyun, şu işinizi görür.

    Test etmedim fakat çalışır büyük ihtimalle.
    Editör sıkıntısı oluyor şuradan alın kodları: https://pastebin.pl/view/raw/faf825b6
    Temamdır hocam teşekkür ederim. Sonuç olarak öğrendiklerimi birleştirerek bu kullanım için şu şekilde yaptım, varsa bir hatam yazarsanız sevinirim.



    in_array kullanmak için explode etmek zorunda kaldım, explode etmeden ve in_array kullanmadan yapabilir miydim bilmiyorum.