Best Studio 1
Best Studio
TuZaKK 1
TuZaKK
Mt2Hizmet 1
Mt2Hizmet
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
kaptanmikro1 1
kaptanmikro1
R 1
Roksam
[DEV]AB 1
[DEV]AB
Sevdamsın 1
Sevdamsın
farkmt2official 1
farkmt2official
emirhanHCL 1
emirhanHCL
Scarlet 1
Scarlet
Hikaye Ekle

PHP - Dizi Yapısallaştırma

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

1__Tltzuq-XzgNpvjClUZBzQ.png


PHP'de, Dizi yapıbozumu terimi, dizi elemanlarını ayrı değişkenlere çıkarma mekanizmasını ifade eder. Buna dizinin paketten çıkarılması da denebilir. PHP'nin list() yapısı, verilen diziyi yapıbozumuna uğratmak ve öğelerini tek bir ifadede bir değişkenler listesine atamak için kullanılır.

list($var1, $var2, $var3, . . . ) = array(val1, val2, val3, . . .);

Sonuç olarak, val1 $var1'e, val2 $var2'ye atanır ve bu böyle devam eder. Parantezlerden dolayı list()'in bir fonksiyon olduğunu düşünebilirsiniz, ancak dönüş değeri olmadığı için öyle değildir. PHP bir dizeyi bir dizi olarak ele alır, ancak list() ile açılamaz. Ayrıca, list()'deki parantez boş olamaz.

list() yerine, diziyi parçalamak için kısayol olarak köşeli parantezleri [] de kullanabilirsiniz.

[$var1, $var2, $var3, . . . ] = array(val1, val2, val3, . . .);

Örnek

Aşağıdaki örneğe bir göz atın.

PHP:
<?php
   $marks = array(50, 56, 70);
   list($p, $c, $m) = $marks;
   echo "Physics: $p  Chemistry: $c  Maths: $m" . PHP_EOL;

   # shortcut notation
   [$p, $c, $m] = $marks;
   echo "Physics: $p  Chemistry: $c  Maths: $m" . PHP_EOL;
?>

Aşağıdaki çıktıyı üretecektir:

Physics: 50 Chemistry: 56 Maths: 70
Physics: 50 Chemistry: 56 Maths: 70


Bir İlişkisel Dizinin Yapısının Çözülmesi

PHP 7.1.0'dan önce, list() yalnızca sayısal indeksleri 0'dan başlayan sayısal dizilerde çalışıyordu. PHP 7.1'de, dizi parçalama ilişkisel dizilerde de çalışıyor.

Aşağıdaki ilişkisel diziyi, sayısal olmayan dizinlere sahip bir diziyi yapıbozuma uğratmaya (veya paketinden çıkarmaya) çalışalım.

$marks = array('p'=>50, 'c'=>56, 'm'=>70);

Bu diziyi parçalamak için list() ifadesi her dizi anahtarını bağımsız bir değişkenle ilişkilendirir.

list('p'=>$p, 'c'=>$c, 'm'=>$m) = $marks;

Bunun yerine, [] alternatif yapı bozma gösterimini de kullanabilirsiniz.

['p'=>$p, 'c'=>$c, 'm'=>$m] = $marks;

Aşağıdaki PHP betiğini deneyin ve çalıştırın:

PHP:
<?php
   $marks = array('p'=>50, 'c'=>56, 'm'=>70);
   list('p'=>$p, 'c'=>$c, 'm'=>$m) = $marks;
   echo "Physics: $p  Chemistry: $c  Maths: $m" . PHP_EOL;

   # shortcut notation
   ['p'=>$p, 'c'=>$c, 'm'=>$m] = $marks;
   echo "Physics: $p  Chemistry: $c  Maths: $m" . PHP_EOL;
?>

Dizi Elemanlarını Atlama

Dizinli bir dizi durumunda, bazı öğelerini atlayıp yalnızca diğerlerini gerekli değişkenlere atayabilirsiniz.

PHP:
<?php
   $marks = array(50, 56, 70);
   list($p, , $m) = $marks;
   echo "Physics: $p  Maths: $m" . PHP_EOL;

   # shortcut notation
   [$p, , $m] = $marks;
   echo "Physics: $p  Maths: $m" . PHP_EOL;
?>

İlişkisel dizilerde, indeksler 0'dan başlayarak artımlı olmadığından, atama yaparken eleman sırasını takip etmeye gerek yoktur.

PHP:
<?php
   $marks = array('p'=>50, 'c'=>56, 'm'=>70);
   list('c'=>$c, 'p'=>$p, 'm'=>$m) = $marks;
   echo "Physics: $p  Chemistry: $c  Maths: $m" . PHP_EOL;

   ['c'=>$c, 'm'=>$m, 'p'=>$p] = $marks;        # shortcut notation
   echo "Physics: $p  Chemistry: $c  Maths: $m" . PHP_EOL;
?>

İç İçe Diziyi Yapısallaştırma

Dizi yapıbozumu kavramını iç içe geçmiş dizilere de genişletebilirsiniz. Aşağıdaki örnekte, iç içe geçmiş alt dizi, dizinlenmiş bir dizidir.

PHP:
<?php
   $marks = ['marks' => [50, 60, 70]];
   ['marks' => [$p, $c, $m]] = $marks;
   echo "Physics: $p  Chemistry: $c  Maths: $m" . PHP_EOL;
?>

PHP:
<?php
   $marks = ['marks' => ['p'=>50, 'c'=>60, 'm'=>70]];
   ['marks' => ['p'=>$p, 'c'=>$c, 'm'=>$m]] = $marks;
   echo "Physics: $p  Chemistry: $c  Maths: $m" . PHP_EOL;
?>
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst