Çok nadir de olsa kimi zaman, tek seferde birden çok veriyi post etme ihtiyacı duyabiliyoruz. Formdan girilen veriler haricinde, örneğin javascript kodu yardımı ile bir takım veriler oluşturdunuz ve bu verileri post ederek başka bir sayfaya aktarmak istiyorsunuz. Daha basit bir örnekle, for dizisi ile birden çok veri oluşturdunuz  ve bu verileri bir şekilde post etmek istiyorsunuz.
Bu tür durumlarda akla ilk olarak, toplu halde post etmek istediğimiz bu verileri bir diziye atmak ve value değeri olarak bu diziyi post etmek gelmektedir. Bunun için ise PHP'nin hazır olarak sunduğu serialize ve unserialize fonksiyonları işinizi görecektir.

Örneğin; test1.php sayfası içinde şöyle bir dizimiz var:
  $arabalar= array('bmw','volkswagen','audi','nissan'); 

test1.php dosyasınındaki $arabalar adlı diziyi test2.php dosyasına post etmek için, hidden form içerisinde yer alan value kısmında $blogkafem dizisini serialize fonksiyonu içerisinde yazmak gerekiyor.

<input type="hidden" name="dizi_post" value="<?php echo serialize($arabalar);?>" />

test2.php dosyasının içinden diziyi almak için ise unserialize metodunu kullanmanız yeterli olacaktır. Şu şekilde :

$blogkafem= unserialize($_POST['dizi_post']);

Böylelikle test1.php sayfasından gönderilen $arabalar adlı dizi, test2.php sayfasındaki $blogkafem adlı değişkene aktarılmış oldu. Buradaki $blogkafem adlı değişken bir dizi olmuş oluyor. Yani $blogkafem dizisi, test1.php sayfasından gönderilen $arabalar dizisinin içeriğini tutuyor.
Yazının devamını oku
Daha önceki yazımda yazdığım pointer konusunun mantığını anladıysanız bunu anlamanız zor olmayacaktır. Tanımladığımız bir dizi içerisinde pointerları kullanarak gezebiliriz.

Örnek bizi dizi tanımlayalım.

int dizi[5] = {3,5,8,9,7};

Dizilerin mantığından da anlayacağınız üzere dizi içerisindeki her bir elemanın bir adresi bir de indisi vardır. İndis ve adres farklı şeylerdir. Mesela üstteki 5 elemanlı diziyi ele alalım.

0. indisteki eleman = 3 
1. indisteki eleman = 5
2. indisteki eleman = 8
3. indisteki eleman = 9
4. indisteki eleman = 7
 
(Bildiğiniz üzere dizi elemanları sıfırıncı indisten başlar.)

Bu değerler arasından 1. indisli 5 sayısını ele alacak olursak 5 değerinin bulunduğu indis 1'dir ama adresi 0x7ffd084 gibisinden karmaşık bir ifadedir.

Bildiğiniz gibi işaretçiler(pointer) adresler üzerinden işlemler yapmamızı sağlayan bir kavramdır. 

int *p;
p = dizi;

yaparsak eğer, biz dizinin 1. değerinin adresini p işaretçisine atamış oluruz. Başka bir ifade ile 0. indisin adresini, p'ye atamış oluruz.


Yani biz bu aşamadan sonra;
cout << *p;

yaparsak; ekrana dizinin 1. elemanını atamış oluruz. Peki dizinin diğer elemanlarına nasıl ulaşabiliriz?


Dizi içerisindeki ifadeler bilgisayar hafızasında sıralanmış ifadelerdir. Bunlar birbirleri ile bağlantı içindedirler. Bu sebeple biz;

p++;
cout << *p;

yaparsak... Dizinin 2. elemanını ekrana yazdırmış oluruz. Burada pointerın adresini 1 arttırdık. Pointer ifadesi dizinin ilk adresini tutuyordu. Yada başka bir ifade ile dizinin 1. elemanının adresini işaret ediyordu. Biz bunu bir arttırarak p'nin artık dizinin 2. elemanının adresini işaret etmesini sağladık. Çünkü biliyoruz ki dizi içerisindeki elemanların adresleri bilgisayar hafızasında sıralıdırlar.

Bakınız ekran görüntüsü :


Ben tek tek yazdırdım ama 1. cout ifadesini ve p++ ifadesini bir for döngüsü içine atarsanız tüm elemanları kolaylıkla ekrana yazdırabilirsiniz.


Ayrıca, pointerlar ile ekrana yazdırma işini, diziler gibi şu şekilde de yapabiliriz :




Konun daha rahat kavranması açısından basit örnekler verdim. Burada verdiğim örnekler mantığın kavranmasına yönelik örneklerdir. Aklınıza takılan yerleri aşağı kısma yorum olarak yazabilirsiniz.
Yazının devamını oku
BLOGKAFEM.NET © Copyright 2008-2026
Sitedeki yazıların her hakkı BLOGKAFEM.NET sitesine aittir.
Kopyalanması halinde lütfen kaynak gösteriniz.
DMCA.com Protection Status
Anasayfa | Hakkında | İletişim