[PHP] 2 boyutlu dizi taşıma (nesne özellikleriyle)

DorukC

Asistan
Katılım
2 Ocak 2009
Mesajlar
227
Reaksiyon puanı
1
Puanları
0
Arkadaşlar merhaba.
Elimde şu yapıda bir dizim var;

PHP:
$results[$i][$j]->title;
  $results[$i][$j]->snippet;
  $results[$i][$j]->link;

Ben bu diziyi başka bir sayfada içindeki değerleriyle birlikte kullanmak istiyorum. Bir sürü yol denedim ama başaramadım. Bu diziyi tüm özellikleriyle başka bir sayfaya nasıl taşıyabilirim ? Session la denedim ancak başaramadım belki de bir yerde hata yapmışımdır. global degişken diye tanıtayım dedim bu seferde include yaptığımda diğer sayfalarda ki tüm içerik aynen geldi.

Yardımlarınız için şimdiden teşekkürler.
 

DorukC

Asistan
Katılım
2 Ocak 2009
Mesajlar
227
Reaksiyon puanı
1
Puanları
0
Sorunu çözdüm. Aynı sorunu yaşayacak arkadaşlar için çözümü belirteyim. Serialize komutuyla değişkeni tek bir stringmiş gibi (ancak belirli bir formatta) değiştiriyoruz.
Sonra Session'da herhangi bir değişkene atabiliyoruz. Sessiondan geri çağırdıktan sonrada unserialize komutu ile eski haline getiriyoruz.
 

Majeste

Profesör
Katılım
7 Mart 2007
Mesajlar
1,953
Reaksiyon puanı
21
Puanları
0
Hocam peki pratikte bu ne işe yarayacak? (Tam cahil sorusu biliyorum ama çok iyi değilim PHP'de. :D)
 

DorukC

Asistan
Katılım
2 Ocak 2009
Mesajlar
227
Reaksiyon puanı
1
Puanları
0
Elinde diyelim ki bir nesne var ve bunu 2 boyutlu dizide tutuyorsun. Benim yapmaya çalıştığım şeyi örnek vermem gerekirse.
10 tane farkli kategorim var ve her birinin 10 farkli sonuclari var. Ayrica bu nesnelerin link,title ve description özellikleri var. Yani elimde 2 boyutlu bir dizi var.
Değerleri kaybolmadan bunları sayfadan sayfaya taşımaya çalışıyorum veritabanı kullanmakta istemiyorum çünkü projem için gereksiz. Bunları ancak Session ile taşıyabilirim. Session'a da dizi aktaramıyorum. Bunun içinde serialize fonksiyonunu kullandım.
mesela serialize yaptigimda 2 boyutlu dizim şu şekilde bir çıktı veriyor ve bunuda tek bir değişkenmiş gibi Session'a kaydedebiliyorum.

a:2:{i:0;a:2:{i:0;O:8:"stdClass":2:{s:4:"link";s:3:"123";s:3:"url";s:3:"123";}i:1;O:8:"stdClass":2:{s:4:"link";s:4:"1234";s:3:"url";s:4:"1234";}}i:1;a:2:{i:0;O:8:"stdClass":2:{s:4:"link";s:3:"321";s:3:"url";s:3:"321";}i:1;O:8:"stdClass":2:{s:4:"link";s:4:"4321";s:3:"url";s:4:"4321";}}}

burada 123 1234 321 4321 deneme yapmak için kullandığım değerler.
2 boyutlu dizimin yapısıda şu şekilde;
$results[$i][$j]->title;
$results[$i][$j]->snippet;
$results[$i][$j]->link;

unserialize fonksiyonunu çağırdığımda da tek bir değişkenden gene 2 boyutlu dizimi elde edebiliyorum bu sayede sayfalar arası veritabanı kullanmadan çok boyutlu dizileri taşıyabiliyorum.

Umarım anlatabilmişimdir.
 

Majeste

Profesör
Katılım
7 Mart 2007
Mesajlar
1,953
Reaksiyon puanı
21
Puanları
0
Açıklaman için teşekkür ederim.

$results[$i][$j]->title;
$results[$i][$j]->snippet;
$results[$i][$j]->link;

Bu gösterimde link dediğimiz bi değişken değil mi? Sanırım i ve j değerlerine göre her kategori için ayrı title, snippet ve link alıyorsun dizilerden. Peki dizi sadece 1 tane, bu nasıl oluyor? results[1][1]'de örneğin hem title hem snippet hem de link mi saklanıyor?

Veri tabanı kullanmıyor olman da ilginç, ilk kez görüyorum böyle bir şey. Açıkçası yararlı da olabilir ama session veri tabanı ile arasındaki farkları merak ettim. Session dediğimiz olay yanlış bilmiyorsam bilgileri kullanıcının bilgisayarında depoluyor. Öyleyse sanırım bu bilgilerin kaybolma riski var. Her seferinde kullanıcı tekrar o bu bilgileri alıyor sanırım.
 
Üst