Codeigniter'da array içerisindeki objelere bir veri eklemek

By Admin
In BackEnd
16/Kasım/2020
Okuma Süresi: 3 dk.

Merhaba sevgili okur,

Başlık pek açıklayıcı olmadığı için konuyu açmak istiyorum;

Model'den result ile çektiğimiz veriler biliyorsun ki arrayler içerisinde objeler şeklinde geri dönüyor bize. Yani 0. array içinde bir obje, 1. array içinde yine bir obje şeklinde uzayıp gidiyor. Şu şekilde;

Array
(
    [0] => stdClass Object
        (
            [id] => 3
            [title] => Videolu Ders
            [ust_id] => 1
        )

    [1] => stdClass Object
        (
            [id] => 4
            [title] => Videolu Ders
            [ust_id] => 1
        )

    [2] => stdClass Object
          (
            [id] => 35
            [title] => Videolu Ders
            [ust_id] => 1
        )

)

 

Bu içerideki objelere bazen veri eklemek gerekebiliyor. Bu durum özellikle işlemlerin tamamını controller'da yapmak istediğimiz zaman ortaya çıkıyor. Mesela explode komutuyla youtube linkini parçalayıp sadece bir kısmını almam gerekti bir projede. Bu durumda bu explode işlemini view tarafında yaptığım zaman rahatça istediğim çözüme ulaşabiliyordum lakin bunu controller'da yapmak yazılımsal açıdan daha doğru olacağı için biraz zor olsa da doğru olan yolu denedim. Neyse geçelim controller'da yaptığım işleme.

foreach ($viewData->books as $index => $items) {
    $explodeItem = explode("v=", $items->sYoutubeLink);
    $viewData->books[$index]->expYutup = @$explodeItem[1];
}

yukarıdaki kod parçasında modelden result ile gelen $viewData->books verisini foreach'e soktuğum zaman dışındaki arraylerden kurtulmuş oluyoruz. $items objelerinden de istediğimiz veriyi -> ile çekebiliyoruz. Bu mantıkla db'den gelen youtube linkini $items->sYoutubeLink şeklinde çekip explode komutuna soktum. Çıkan verinin 1. indisi benim aradığım değer oluyordu. İşte o değeri   $viewData->books[$index]->expYutup içerisine kaydettim. Burada 2 önemli husus var;

1- $index biliyorsunuz ki foreach döngüsü her döndüğünde sıfırdan başlamak üzere bize indis numarasını veriyor ve otomatik 1 artarak ilerliyordu. Bu şekilde $viewData->books içindeki her array'in içine ayrı ayrı verileri ekleyebilecektim. O yüzden $index önemli bir detay burada. 

2- expYutup diye bir değer yoktu aslında bu objelerin içinde ama ben burada eşitliğin soluna onu yazarak öyle bir değer oluşturmuş oldum. Değerini de eşitliğin sağından almış oldu. Burada önemli olan $viewData->books[$index]->expYutup ifadesini doğru yazabilmektir. Örnek üzerinden gidersek bu şu anlama geliyor; 0 numaralı array içindeki objeye git, o objede expYutup değeri varsa sağındaki değere eşitle, yoksa yeni bi değer oluşturup yine sağındaki değeri eşitle kendisine. Yazdırdığımız zaman şöyle bir sonuç gelir;

Array
(
    [0] => stdClass Object
        (
            [id] => 3
            [title] => Videolu Ders
            [ust_id] => 1

           [expYutup] => wErtYHNJ
        )

    [1] => stdClass Object
        (
            [id] => 4
            [title] => Videolu Ders
            [ust_id] => 1

           [expYutup] => RfgtHYnb
        )

    [2] => stdClass Object
          (
            [id] => 35
            [title] => Videolu Ders
            [ust_id] => 1

            [expYutup] => VBffdsGF
        )

)

View kısmında bu veriyi çekip kullanmak çok basit zaten.

İşte bu şekilde bir array içindeki objeye veri ekleyebiliyorsunuz. Kolay Gele...


Codeigniter 3 İçin Google Recaptcha Kullanımı (Robot Değilim Onay Kutusu)
Codeigniter'da oluşturulmuş bütün sessionları görmek