18-PHP Arrays
Arrays,diziler bizim birden fazla birbirleriyle ilişkili olan değişkenlerimizin bir arada toplanmasını sağlayan yapılardır. Örnek olarak bir çalışan sınıfımızdan 20 tane değişken oluşturmak yerine bunları sadece programlama açısından tek bir iş yapabilen veri yapılarında toplamak daha mantıklıdır bu veri yapılarına diziler denir.
PHP'de dizileri tanımlamak için 2 yöntem vardır;
- [] parantezler kullanarak
- array() fonksiyonunu kullanarak
bunları tek tek göreceğiz. PHP'de diziler 3'e ayrılır;
- Indexed Arrays : Tek bir değişkenden oluşan key&value ilişkisi olmayan dizilerdir.
- Associative Arrays : Key&value ilişkisi olan dizilerdir.
- Multi Dimensional Arrays : Bir dizi içerisinde başka diziler olan yapılardır. İç içe geçen diziler de diyebiliriz.
Öncelikle basitten bir array tanımlamasını görelim.
<?php
// [] kullanarak array tanımlama
$myProgrammingLanguages = ["C#","PHP"];
$myProgrammingLanguages = [
"1" => "C#",
"2" => "PHP",
];
// array() fonksiyonunu kullanarak
$myProgrammingLanguages = array("C#","PHP");
$myProgrammingLanguages = array(
"1" => "C#",
"2" => "PHP",
);
var_dump($myProgrammingLanguages); // array(2) { [1]=> string(2) "C#" [2]=> string(3) "PHP" }
?>
Görüldüğü üzere 2 türlü de array tanımlayabiliriz. var_dump() fonksiyonu sayesinden tanımladığımız değişkenin türünü (burada array) ve değişkenin değerlerini görebiliriz.
1. Indexed Arrays (İndexli Diziler)
Bu diziler tek bir değişkenlerden oluşan yani bir koleksiyon yapısına sahip sadece değerlerden oluşan yapılardır.Key&value çifti değillerdir. Aşağıdaki örneği inceleyim.
<?php
$myMiscNotes = array("selam","minter","coder",true,0,44.4); // Indexed Array
// $myMiscNotes = ["selam","minter","coder",true,0,44.4]; Bu şekilde de tanımlamayı yapabiliriz.
echo "$myMiscNotes[0] <br>"; // selam
echo "$myMiscNotes[3] <br>"; // true
echo "$myMiscNotes[4] <br>"; // 0
echo "<hr>";
// Dizi elemanlarına erişim yapmak için ise;
foreach($myMiscNotes as $note){
echo "$note <br>";
}
?>
Görüldüğü üzere $myMiscNotes isimli bir array tanımladık ve içerisini öğrendiğimiz veri tipleriyle doldurduk. İşte sadece böyle koleksiyonlardan oluşan yapılara "Indexed Arrays" denir.
Note : Dizilerdeki elemanlara erişim her zaman 0'dan başlar. Bunlara index denir. Örneğin biz dizinin 1.elemanına erişmek istiyorsak 0.index, 2.elemanına erişmek istiyorsak 1.index'ine erişmemiz gerekir gibi... Yukarıda ki örnekte de görüldüğü üzere biz $myMiscNotes[4] ile dizimizde bulunan 5.değer yani "true" erişim yapıyoruz.
2. Associative Arrays (Key&Value Diziler)
PHP'de eğer ki bir dizi key&value çiftlerinden oluşuyorsa bunlara "associative arrays" denir. Burada artık biz index kullanmayız, burda artık süreçler hep key'ler üzerinden geçer.Bir key'i value ile ilişkilendirmek istiyorsak eğer "=>" işareti kullanılır.
<?php
$myNotes = array(
"birinci_Not" => "Php öğrenilecek.",
"ikinci_Not" => "C# öğrenilecek.",
);
var_dump($myNotes);
foreach($myNotes as $key=>$value){
echo "$key => $value<br>";
}
?>
Görüldüğü üzere biz 2 tane key ve value yaptık. Bu tarz arraylere "Associative arrays" denir. Key alanı int,float,string veya boolean türünde olabilir. Value alanı da herhangi bir tip olabilir.
Note : Önemli bir kısım vardır biz eğer ki key kısmını boolean yaparsak (true,false) true için 1 ve false için 0 olacaktır.Float için ise int türüne dönüştürülecektir.
$myNote = array(
1.2 => "Minter",
true => "Coder",
"myName" => "Minter Coder"
);
var_dump($myNote);
/*
ÇIKTI
array(2) { [1]=> string(5) "Coder" ["myName"]=> string(12) "Minter Coder" }
*/
Eğer ki biz boolean'da iki tane key'imizi true yaparsak en sondaki key'in değeri görüntülenecektir.
$myNote = array(
true => "Minter",
true => "Coder",
);
var_dump($myNote);
/*
ÇIKTI
array(1) { [1]=> string(5) "Coder" }
*/
3. Multidimensional Arrays
Multidimensional arrays,çok boyutlu dizilerdir ve dizi içerisinde dizi barındırmak olarak akılda tutabilirsiniz.
<?php
$myMultidimensionalArrays = array(
array(1,2,3,4),
array(true,false,"Minter"),
array("Coder"),
array(
"myname" => "Minter",
"mysurname" => "Coder"
)
);
foreach($myMultidimensionalArrays as $myMultidimensionalArray){
var_dump($myMultidimensionalArray);
echo "<br>";
}
?>
Extra : PHP Array Functions
PHP'de bulunan dizi fonksiyonlarına bakalım.Bunlar bizim daha çok dizilerle etkileşim haline geçmemizi ve diziler üzerinde bazı işlemleri gerçekleştirmemizi sağlayan fonksiyonlardır.
-
count() Bu fonksiyon bir dizide kaç tane eleman olup olmadığını bulur.
<?php $myArray = array( "C#","Php","Minter","Coder" ); echo "count(myArray) = " . count($myArray) . "<br>"; // Çıktı : 4 ?>
-
sort() Bu fonksiyon diziyi sıralamak için kullanılır.a'dan z'ye yada küçükten büyüğe
<?php $myArray = array( "C#","Php","Minter","Coder" ); echo "sort(myArray) = " . sort($myArray) . "<br>" . " ". var_dump($myArray); ?>
-
array_reverse() Bu fonksiyon diziyi tersten sıralamak için kullanılır.
<?php
$myArray = array(
"C#","Php","Minter","Coder"
);
$myArray = array_reverse($myArray);
echo "array_reverse(myArray) = " . $myArray . "<br>";
?>
- array_search() Bu fonksiyona verdiğimiz değerin dizi'de kaçıncı index'de olup olmadığını bulur.
<?php
$myArray = array(
"C#","Php","Minter","Coder"
);
$value = array_search("Minter",$myArray);
echo $value . "<br>"; // Çıktı : 2
?>
- array_change_key_case() Bu fonksiyon dizide bulunan key'lerin hepsini BÜYÜK yada küçük harfe çevirmede kullanılır.
<?php
$mySecondArray = array(
"myFirst" => "C#",
"MySecOnd" => "Php"
);
$myLowerArray = array_change_key_case($mySecondArray, CASE_LOWER);
print_r($myLowerArray); // Çıktı : Array ( [myfirst] => C# [mysecond] => Php )
echo "<br>";
$myUpperArray = array_change_key_case($mySecondArray, CASE_UPPER);
print_r($myUpperArray); // Çıktı : Array ( [MYFIRST] => C# [MYSECOND] => Php )
?>
-
array_keys() ve array_values() array_keys() fonksiyonu dizide bulunan key'leri dönderir. array_values() fonksiyonu dizide bulunan değerleri dönderir.
<?php $myThirdArray = array( "myThird" => "C#", "myThirdOnd" => "Php" ); $myArraysKey = array_keys($myThirdArray); $myArraysValue = array_values($myThirdArray); print_r($myArraysKey); echo "<br>"; print_r($myArraysValue); /* ÇIKTI Array ( [0] => myThird [1] => myThirdOnd ) Array ( [0] => C# [1] => Php ) */ ?>
-
explode() : Bir stringe bir karakter verip, verilen karaktere göre string parçalanıp bir diziye aktarılır.
<?php
$test = "minter,coder,php,cyber,security";
$arr = explode(',',$test);
print_r($arr);
?>
- implode() : Explode'nin tam tersi , bu sefer bir arrayi string dönüştürüğ hangi karakterle birleştirmemizi gösterir.
<?php
$arr = array("minter","php","cyber");
$string = implode("|",$arr); // minter|php|cyber
echo $string;
?>
- array_combine() : 2 tane array'i birleştirmede kullanılır.
<?php
$key = array("ad","soyad");
$values = array("minter","coder");
$arr = array_combine($key,$values);
print_r($arr);
?>
- array_flip() : Dizide key ve value değerlerinin yer değiştirmek için kullanılır. Key value, value ise key olur.
<?php
$arr = array(
"ad" => "Minter",
"soyad" => "Coder",
"meslek" => "Cyber"
);
$arr2 = array_flip($arr);
print_r($arr2);
?>