Array


Array






Array 
Sebuah array di PHP sebenarnya adalah peta yang dipesan. Peta adalah jenis yang menghubungkan nilai ke kunci . Jenis ini dioptimalkan untuk beberapa kegunaan yang berbeda; Ini dapat diperlakukan sebagai array, daftar (vektor), tabel hash (implementasi peta), kamus, koleksi, tumpukan, antrian, dan mungkin lebih. Sebagai nilai array dapat array lain s, pohon danarray multidimensi s juga mungkin.
Penjelasan tentang struktur data tersebut berada di luar cakupan manual ini, namun setidaknya satu contoh disediakan untuk masing-masing metode tersebut. Untuk informasi lebih lanjut, lihatlah literatur yang ada tentang topik yang luas ini.
Sintaksis 
Menentukan dengan array () 
Sebuah array dapat dibuat dengan menggunakan array () membangun bahasa. Dibutuhkan sejumlah pasangan nilai koma =kunci yang dipisahkan koma sebagai argumen.
 array (
     key => nilai ,
     key2 => value2 ,
     key3 => value3 ,
     ...
 )
Perintah koma setelah elemen array terakhir bersifat opsional dan dapat diabaikan. Hal ini biasanya dilakukan untuk array single-line, yaitu array (1, 2) lebih disukai daripada array (1, 2,) . Untuk array multi-line di sisi lain koma trailing biasanya digunakan, karena memungkinkan penambahan elemen baru yang lebih mudah di akhir.
Seperti pada PHP 5.4 Anda juga bisa menggunakan sintaks array pendek, yang menggantikan array () dengan [] .
Contoh # 1 Sebuah array sederhana
<?php
$array = array(
"foo" => "bar" ,
"bar" => "foo" ,
);

// as of PHP 5.4
$array = [
"foo" => "bar" ,
"bar" => "foo" ,
];
?>
Kuncinya bisa berupa integer atau string . Nilai bisa dari jenis apapun.
Selain itu, guncangan kunci berikut akan terjadi:
  • String s berisi bilangan desimal desimal yang valid, kecuali jika nomor didahului dengan tanda + , akan dilemparkan ke tipeinteger . Misalnya tombol "8" sebenarnya akan disimpan di bawah 8 . Di sisi lain "08" tidak akan dilemparkan, karena ini bukan bilangan bulat desimal yang valid.
  • Float s juga dilemparkan ke integer s, yang berarti bagian pecahan akan terpotong. Misalnya tombol 8.7 benar-benar akan disimpan di bawah 8 .
  • Bool s dilemparkan ke integer s juga, yaitu kunci true sebenarnya akan disimpan di bawah 1 dan tombol false di bawah 0 .
  • Null akan dilemparkan ke string kosong, yaitu null kunci sebenarnya akan disimpan di bawah "" .
  • Array s dan objek s tidak dapat digunakan sebagai kunci. Melakukan hal tersebut akan menghasilkan peringatan: Tipe offset ilegal .
Jika beberapa elemen dalam deklarasi array menggunakan kunci yang sama, hanya satu yang terakhir akan digunakan karena semua yang lain ditimpa.
Contoh # 2 contoh Casting dan Overwriting Tipe
<?php
$array = array(
1 => "a" ,
"1" => "b" ,
1.5 => "c" ,
true => "d" ,
);
var_dump ( $array );
?>
Contoh di atas akan menampilkan:
 array (1) {
   [1] =>
   string (1) "d"
 }
Karena semua kunci pada contoh di atas dilemparkan ke 1 , nilainya akan ditimpa pada setiap elemen baru dan nilai yang ditetapkan terakhir "d" adalah satu-satunya yang tersisa.
Array PHP dapat berisi bilangan bulat dan tombol string bersamaan dengan PHP tidak membedakan antara array yang diindeks dan asosiatif.
Contoh # 3 Campuran integer dan kunci string
<?php
$array = array(
"foo" => "bar" ,
"bar" => "foo" ,
100 => - 100 ,
- 100 => 100 ,
);
var_dump ( $array );
?>
Contoh di atas akan menampilkan:
 array (4) {
   ["foo"] =>
   string (3) "bar"
   ["bar"] =>
   string (3) "foo"
   [100] =>
   int (-100)
   [-100] =>
   int (100)
 }
Kuncinya adalah opsional. Jika tidak ditentukan, PHP akan menggunakan kenaikan kunci bilangan bulat terbesar yang pernah digunakan.
Contoh # 4 Indexed array tanpa kunci
<?php
$array = array( "foo" , "bar" , "hello" , "world" );
var_dump ( $array );
?>
Contoh di atas akan menampilkan:
 array (4) {
   [0] =>
   string (3) "foo"
   [1] =>
   string (3) "bar"
   [2] =>
   string (5) "halo"
   [3] =>
   string (5) "dunia"
 }
Hal ini dimungkinkan untuk menentukan kunci hanya untuk beberapa elemen dan membiarkannya keluar untuk orang lain:
Contoh # 5 Tombol tidak pada semua elemen
<?php
$array = array(
"a" ,
"b" ,
6 => "c" ,
"d" ,
);
var_dump ( $array );
?>
Contoh di atas akan menampilkan:
 array (4) {
   [0] =>
   string (1) "a"
   [1] =>
   string (1) "b"
   [6] =>
   string (1) "c"
   [7] =>
   string (1) "d"
 }
Seperti yang Anda lihat, nilai terakhir "d" diberi tombol 7 . Ini karena kunci bilangan bulat terbesar sebelum itu adalah 6 .
Mengakses elemen array dengan sintaks braket persegi 
Array elemen dapat diakses menggunakan array [key] syntax.
Contoh # 6 Mengakses elemen array
<?php
$array = array(
"foo" => "bar" ,
42 => 24 ,
"multi" => array(
"dimensional" => array(
"array" => "foo"
)
)
);

var_dump ( $array [ "foo" ]);
var_dump ( $array [ 42 ]);
var_dump ( $array [ "multi" ][ "dimensional" ][ "array" ]);
?>
Contoh di atas akan menampilkan:
 string (3) "bar"
 int (24)
 string (3) "foo"
Catatan :
Kedua kurung siku dan kurung kurawal dapat digunakan secara bergantian untuk mengakses elemen array (misalnya $ array [42] dan $ array {42} keduanya akan melakukan hal yang sama pada contoh di atas).
Seperti pada PHP 5.4 dimungkinkan untuk array dereference hasil fungsi atau metode call secara langsung. Sebelum itu hanya mungkin menggunakan variabel sementara.
Pada PHP 5.5, dimungkinkan untuk array dereference array literal.
Contoh # 7 Array dereferencing
<?php
function getArray () {
return array( 1 , 2 , 3 );
}

// on PHP 5.4
$secondElement = getArray ()[ 1 ];

// previously
$tmp = getArray ();
$secondElement = $tmp [ 1 ];

// or
list(, $secondElement ) = getArray ();
?>
Catatan :
Mencoba mengakses kunci array yang belum didefinisikan sama dengan mengakses variabel undefined lainnya: pesan kesalahan tingkat E_NOTICE akan dikeluarkan, dan hasilnya adalah NULL .
Catatan :
Array dereferencing nilai skalar yang bukan string diam-diam menghasilkan NULL , yaitu tanpa mengeluarkan pesan kesalahan.
Membuat / memodifikasi dengan sintaks braket persegi 
Array yang ada dapat dimodifikasi dengan menetapkan secara eksplisit nilai-nilai di dalamnya.
Hal ini dilakukan dengan menetapkan nilai pada array , menentukan kunci dalam tanda kurung. Kuncinya juga bisa dihilangkan, sehingga menghasilkan sepasang kurung kosong ( [] ).
 $ arr [ kunci ] = nilai ;
 $ arr [] = nilai ;
 // kunci bisa berupa integer atau string
 // nilai dapat berupa nilai dari jenis apa pun
Jika $ arr belum ada, maka akan dibuat, jadi ini juga cara alternatif untuk membuat array . Namun praktik ini berkecil hati karena jika $ arr sudah mengandung beberapa nilai (misalnya string dari variabel permintaan) maka nilai ini akan tetap berada di tempat itu dan [] mungkin benar-benar berdiri untuk operator akses string . Selalu lebih baik menginisialisasi variabel dengan tugas langsung.
Catatan : Seperti pada PHP 7.1.0, menerapkan indeks operator kosong pada string melempar kesalahan fatal.Dahulu, senar itu diam-diam dikonversi menjadi sebuah array.
Untuk mengubah nilai tertentu, tetapkan nilai baru ke elemen itu dengan menggunakan kuncinya. Untuk menghapus pasangan kunci / nilai, hubungi fungsi unset () di atasnya.
<?php
$arr = array( 5 => 1 , 12 => 2 );

$arr [] = 56 ; // This is the same as $arr[13] = 56;
// at this point of the script

$arr [ "x" ] = 42 ; // This adds a new element to
// the array with key "x"

unset( $arr [ 5 ]); // This removes the element from the array

unset( $arr ); // This deletes the whole array
?>
Catatan :
Seperti disebutkan di atas, jika tidak ada kunci yang ditentukan, maksimum indeks integer yang ada diambil, dan kunci baru adalah nilai maksimum ditambah 1 (tapi setidaknya 0). Jika tidak ada indeks bilangan bulat yang ada, kuncinya adalah 0 (nol).
Perhatikan bahwa kunci bilangan bulat maksimum yang digunakan untuk kebutuhan ini saat ini tidak ada dalamarray . Itu hanya perlu ada dalam array pada beberapa waktu sejak terakhir kali array itu diindeks ulang. Contoh berikut menggambarkan:
<?php
// Create a simple array.
$array = array( 1 , 2 , 3 , 4 , 5 );
print_r ( $array );

// Now delete every item, but leave the array itself intact:
foreach ( $array as $i => $value ) {
unset( $array [ $i ]);
}
print_r ( $array );

// Append an item (note that the new key is 5, instead of 0).
$array [] = 6 ;
print_r ( $array );

// Re-index:
$array = array_values ( $array );
$array [] = 7 ;
print_r ( $array );
?>
Contoh di atas akan menampilkan:
 Array
 (
     [0] => 1
     [1] => 2
     [2] => 3
     [3] => 4
     [4] => 5
 )
 Array
 (
 )
 Array
 (
     [5] => 6
 )
 Array
 (
     [0] => 6
     [1] => 7
 )
Fungsi yang berguna 
Ada beberapa fungsi berguna untuk bekerja dengan array. Lihat bagian fungsi array .
Catatan :
Unset () fungsi memungkinkan menghapus kunci dari array . Sadarilah bahwa array tidak akan diindeks ulang. Jika perilaku "hapus dan pergeseran" yang benar diinginkan, array dapat diindeks ulang dengan menggunakan fungsiarray_values ​​() .
<?php
$a = array( 1 => 'one' , 2 => 'two' , 3 => 'three' );
unset( $a [ 2 ]);
/* will produce an array that would have been defined as
$a = array(1 => 'one', 3 => 'three');
and NOT
$a = array(1 => 'one', 2 =>'three');
*/

$b = array_values ( $a );
// Now $b is array(0 => 'one', 1 =>'three')
?>
Struktur kontrol foreach ada secara khusus untuk array s. Ini menyediakan cara mudah untuk melintasi sebuah array .
Array lakukan dan jangan dilakukan 
Mengapa $ foo [bar] salah? 
Selalu gunakan tanda kutip di sekitar indeks array literal liter. Misalnya, $ foo ['bar'] benar, sedangkan $ foo [bar] tidak. Tapi kenapa? Adalah umum untuk menemukan sintaks semacam ini dalam skrip lama:
<?php
$foo [ bar ] = 'enemy' ;
echo $foo [ bar ];
// etc
?>
Ini salah, tapi berhasil. Alasannya adalah bahwa kode ini memiliki konstanta undefined ( bar ) dan bukan string ( 'bar' - perhatikan tanda kutip). Ia bekerja karena PHP secara otomatis mengubah string telanjang ( string tak dikenal yang tidak sesuai dengan simbol yang diketahui) ke dalam string yang berisi string telanjang. Misalnya, jika tidak ada bar dinamik yang didefinisikan, maka PHP akan menggantikan string 'bar' dan menggunakannya.
Catatan : Ini tidak berarti selalu mengutip kuncinya. Jangan mengutip kunci yang merupakan konstanta atauvariabel , karena ini akan mencegah PHP menafsirkannya.
<?php
error_reporting ( E_ALL );
ini_set ( 'display_errors' , true );
ini_set ( 'html_errors' , false );
// Simple array:
$array = array( 1 , 2 );
$count = count ( $array );
for ( $i = 0 ; $i < $count ; $i ++) {
echo "\nChecking $i : \n" ;
echo "Bad: " . $array [ '$i' ] . "\n" ;
echo "Good: " . $array [ $i ] . "\n" ;
echo "Bad: { $array [ '$i' ]} \n" ;
echo "Good: { $array [ $i ]} \n" ;
}
?>
Contoh di atas akan menampilkan:
 Memeriksa 0:
 Perhatikan: Indeks yang tidak ditentukan: $ i in /path/to/script.html on line 9
 Buruk:
 Bagus: 1
 Perhatikan: Indeks yang tidak ditentukan: $ i in /path/to/script.html on line 11
 Buruk:
 Bagus: 1

 Memeriksa 1:
 Perhatikan: Indeks yang tidak ditentukan: $ i in /path/to/script.html on line 9
 Buruk:
 Bagus: 2
 Perhatikan: Indeks yang tidak ditentukan: $ i in /path/to/script.html on line 11
 Buruk:
 Bagus: 2
Lebih banyak contoh untuk menunjukkan perilaku ini:
<?php
// Show all errors
error_reporting ( E_ALL );

$arr = array( 'fruit' => 'apple' , 'veggie' => 'carrot' );

// Correct
print $arr [ 'fruit' ]; // apple
print $arr [ 'veggie' ]; // carrot

// Incorrect. This works but also throws a PHP error of level E_NOTICE because
// of an undefined constant named fruit
//
// Notice: Use of undefined constant fruit - assumed 'fruit' in...
print $arr [ fruit ]; // apple

// This defines a constant to demonstrate what's going on. The value 'veggie'
// is assigned to a constant named fruit.
define ( 'fruit' , 'veggie' );

// Notice the difference now
print $arr [ 'fruit' ]; // apple
print $arr [ fruit ]; // carrot

// The following is okay, as it's inside a string. Constants are not looked for
// within strings, so no E_NOTICE occurs here
print "Hello $arr [ fruit ] " ; // Hello apple

// With one exception: braces surrounding arrays within strings allows constants
// to be interpreted
print "Hello { $arr [ fruit ]} " ; // Hello carrot
print "Hello { $arr [ 'fruit' ]} " ; // Hello apple

// This will not work, and will result in a parse error, such as:
// Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING'
// This of course applies to using superglobals in strings as well
print "Hello $arr [ 'fruit']" ;
print "Hello $_GET [ 'foo']" ;

// Concatenation is another option
print "Hello " . $arr [ 'fruit' ]; // Hello apple
?>
Saat error_reporting diatur untuk menunjukkan kesalahan tingkat E_NOTICE (dengan menyetelnya ke E_ALL , misalnya), penggunaan seperti itu akan segera terlihat. Secara default, error_reporting diatur untuk tidak menampilkan pemberitahuan.
Seperti yang dinyatakan di bagian sintaks , apa yang ada di dalam tanda kurung siku (' [ ' dan ' ] ') harus menjadi ungkapan. Ini berarti kode seperti ini bekerja:
<?php
echo $arr [ somefunc ( $bar )];
?>
Ini adalah contoh penggunaan fungsi return value sebagai indeks array. PHP juga tahu tentang konstanta:
<?php
$error_descriptions [ E_ERROR ] = "A fatal error has occurred" ;
$error_descriptions [ E_WARNING ] = "PHP issued a warning" ;
$error_descriptions [ E_NOTICE ] = "This is just an informal notice" ;
?>
Perhatikan bahwa E_ERROR juga merupakan identifier yang valid, sama seperti bar pada contoh pertama. Tapi contoh terakhir sebenarnya sama dengan menulis:
<?php
$error_descriptions [ 1 ] = "A fatal error has occurred" ;
$error_descriptions [ 2 ] = "PHP issued a warning" ;
$error_descriptions [ 8 ] = "This is just an informal notice" ;
?>
karena E_ERROR sama dengan 1 , dll.
Jadi mengapa itu buruk?
Pada beberapa titik di masa depan, tim PHP mungkin ingin menambahkan kata kunci atau kata kunci lain, atau kode yang konstan dalam kode lainnya dapat mengganggu. Misalnya, sudah salah menggunakan kata-kata kosong dan default seperti ini, karena kata kunci tersebut sudah dicadangkan .
Catatan : Untuk mengulangi, di dalam string yang dikutip ganda, ini berlaku untuk tidak mengelilingi indeks array dengan tanda petik jadi "$ foo [bar]" valid. Lihat contoh di atas untuk rincian mengapa serta bagian tentangpenguraian variabel dalam string .
Mengkonversi ke array 
Untuk tipe integer , float , string , boolean dan resource , mengubah nilai ke array menghasilkan array dengan satu elemen dengan indeks nol dan nilai skalar yang dikonversi. Dengan kata lain, (array) $ scalarValue sama persis dengan array ($ scalarValue) .
Jika sebuah objek dikonversi ke array , hasilnya adalah array yang elemennya adalah properti objek. Kuncinya adalah nama variabel anggota, dengan beberapa pengecualian: properti bilangan bulat tidak dapat diakses; variabel privat memiliki nama kelas yang ditambahkan ke nama variabel; variabel yang dilindungi memiliki '*' yang ditambahkan ke nama variabel. Nilai prepended ini memiliki byte nol di kedua sisi. Hal ini dapat mengakibatkan beberapa perilaku tak terduga:
<?php

class A {
private $A ; // This will become '\0A\0A'
}

class B extends A {
private $A ; // This will become '\0B\0A'
public $AA ; // This will become 'AA'
}

var_dump ((array) new B ());
?>
Di atas akan muncul dua kunci bernama 'AA', meski salah satunya sebenarnya bernama '\ 0A \ 0A'.
Mengkonversi NULL ke array menghasilkan array kosong.
Perbandingan 
Hal ini dimungkinkan untuk membandingkan array dengan fungsi array_diff () dan dengan operator array .
Contoh 
Tipe array di PHP sangat serbaguna. Berikut adalah beberapa contohnya:
<?php
// This:
$a = array( 'color' => 'red' ,
'taste' => 'sweet' ,
'shape' => 'round' ,
'name' => 'apple' ,
4 // key will be 0
);

$b = array( 'a' , 'b' , 'c' );

// . . .is completely equivalent with this:
$a = array();
$a [ 'color' ] = 'red' ;
$a [ 'taste' ] = 'sweet' ;
$a [ 'shape' ] = 'round' ;
$a [ 'name' ] = 'apple' ;
$a [] = 4 ; // key will be 0

$b = array();
$b [] = 'a' ;
$b [] = 'b' ;
$b [] = 'c' ;

// After the above code is executed, $a will be the array
// array('color' => 'red', 'taste' => 'sweet', 'shape' => 'round',
// 'name' => 'apple', 0 => 4), and $b will be the array
// array(0 => 'a', 1 => 'b', 2 => 'c'), or simply array('a', 'b', 'c').
?>
Contoh # 8 Menggunakan array ()
<?php
// Array as (property-)map
$map = array( 'version' => 4 ,
'OS' => 'Linux' ,
'lang' => 'english' ,
'short_tags' => true
);

// strictly numerical keys
$array = array( 7 ,
8 ,
0 ,
156 ,
- 10
);
// this is the same as array(0 => 7, 1 => 8, ...)

$switching = array( 10 , // key = 0
5 => 6 ,
3 => 7 ,
'a' => 4 ,
11 , // key = 6 (maximum of integer-indices was 5)
'8' => 2 , // key = 8 (integer!)
'02' => 77 , // key = '02'
0 => 12 // the value 10 will be overwritten by 12
);

// empty array
$empty = array();
?>
Contoh # 9 Koleksi
<?php
$colors = array( 'red' , 'blue' , 'green' , 'yellow' );

foreach ( $colors as $color ) {
echo "Do you like $color ?\n" ;
}

?>
Contoh di atas akan menampilkan:
 Apakah kamu suka merah?
 Apakah kamu suka biru
 Apakah kamu suka hijau
 Apakah kamu suka kuning
Mengubah nilai array secara langsung dimungkinkan dengan cara mengirimkannya melalui referensi.
Contoh # 10 Mengubah elemen dalam lingkaran
<?php
foreach ( $colors as & $color ) {
$color = strtoupper ( $color );
}
unset( $color ); /* ensure that following writes to
$color will not modify the last array element */

print_r ( $colors );
?>
Contoh di atas akan menampilkan:
 Array
 (
     [0] => MERAH
     [1] => BIRU
     [2] => HIJAU
     [3] => KUNING
 )
Contoh ini menciptakan array berbasis-satu.
Contoh # 11 Satu indeks berbasis
<?php
$firstquarter = array( 1 => 'January' , 'February' , 'March' );
print_r ( $firstquarter );
?>
Contoh di atas akan menampilkan:
 Array
 (
     [1] => 'Januari'
     [2] => 'Februari'
     [3] => 'Maret'
 )
Contoh # 12 Mengisi sebuah array
<?php
// fill an array with all items from a directory
$handle = opendir ( '.' );
while ( false !== ( $file = readdir ( $handle ))) {
$files [] = $file ;
}
closedir ( $handle );
?>
Array s diperintahkan. Perintah bisa diubah dengan menggunakan berbagai fungsi pemilahan. Lihat bagian fungsi array untuk informasi lebih lanjut. Fungsi count () dapat digunakan untuk menghitung jumlah item dalam sebuah array .
Contoh # 13 Menyortir sebuah array
<?php
sort ( $files );
print_r ( $files );
?>
Karena nilai sebuah array bisa apa saja, itu juga bisa jadi array lain. Hal ini memungkinkan pembuatan array rekursif dan multi-dimensi s.
Contoh # 14 array rekursif dan multi-dimensi
<?php
$fruits = array ( "fruits" => array ( "a" => "orange" ,
"b" => "banana" ,
"c" => "apple"
),
"numbers" => array ( 1 ,
2 ,
3 ,
4 ,
5 ,
6
),
"holes" => array ( "first" ,
5 => "second" ,
"third"
)
);

// Some examples to address values in the array above
echo $fruits [ "holes" ][ 5 ]; // prints "second"
echo $fruits [ "fruits" ][ "a" ]; // prints "orange"
unset( $fruits [ "holes" ][ 0 ]); // remove "first"

// Create a new multi-dimensional array
$juices [ "apple" ][ "green" ] = "good" ;
?>
Array tugas selalu melibatkan nilai menyalin. Gunakan operator referensi untuk menyalin array dengan referensi.
<?php
$arr1 = array( 2 , 3 );
$arr2 = $arr1 ;
$arr2 [] = 4 ; // $arr2 is changed,
// $arr1 is still array(2, 3)

$arr3 = & $arr1 ;
$arr3 [] = 4 ; // now $arr1 and $arr3 are the same
?>



Sumber  :
https://goo.gl/images/6Jed9e

Komentar

Postingan populer dari blog ini

Statement If, If else dan Case

Struktur Kendali ( while-do, repeat until, for )

Merancang Algoritma yang Baik