Apa cara termudah untuk membuat array 2d. Saya berharap dapat melakukan sesuatu yang serupa dengan ini:
declare int d[0..m, 0..n]
Anda juga dapat membuat array asosiatif, atau array seperti "tabel-hash", dengan menentukan indeks dari array.
$array = array(
0 => array(
'name' => 'John Doe',
'email' => '[email protected]'
),
1 => array(
'name' => 'Jane Doe',
'email' => '[email protected]'
),
);
Yang mana setara dengan
$array = array();
$array[0] = array();
$array[0]['name'] = 'John Doe';
$array[0]['email'] = '[email protected]';
$array[1] = array();
$array[1]['name'] = 'Jane Doe';
$array[1]['email'] = '[email protected]';
Berikut ini adalah ekuivalen dan menghasilkan array dua dimensi:
$array = array( array(0, 1, 2), array(3, 4, 5), );
atau
$array = array(); $array[] = array(0, 1, 2); $array[] = array(3, 4, 5);
sumber
Nyatakan saja? Anda tidak perlu melakukannya. Pastikan variabel ada:
$d = array();
Array diubah ukurannya secara dinamis, dan mencoba untuk menulis apa pun ke elemen non-exsistant membuatnya (dan membuat seluruh larik jika diperlukan)
$d[1][2] = 3;
Ini berlaku untuk sejumlah dimensi tanpa pernyataan sebelumnya.
sumber
count
pada dimensi yang tepat, misalnyacount($d[1])
, kecuali saya salah memahami maksud Anda?Pertama, PHP tidak memiliki array multi-dimensi, ia memiliki array array.
Kedua, Anda dapat menulis fungsi yang akan melakukannya:
function declare($m, $n, $value = 0) { return array_fill(0, $m, array_fill(0, $n, $value)); }
sumber
Untuk solusi sederhana, "isi sesuai penggunaan":
$foo = array(array());
Ini akan memberi Anda larik dua dimensi semu fleksibel yang dapat menampung $ foo [ n ] [ n ] di mana n <= ∞ (tentu saja Anda dibatasi oleh batasan ukuran memori yang biasa, tetapi Anda mendapatkan ide yang saya harap). Secara teori, hal ini dapat diperpanjang untuk membuat sub array sebanyak yang Anda butuhkan.
sumber
Atau untuk array yang lebih besar, semuanya dengan nilai yang sama:
$m_by_n_array = array_fill(0, $n, array_fill(0, $m, $value);
akan menciptakan
$m
oleh$n
array dengan segala set ke$value
.sumber
Sejauh yang saya tahu tidak ada fungsi php built in untuk melakukan ini, Anda perlu melakukannya melalui loop atau melalui metode kustom yang secara rekursif memanggil sesuatu seperti array_fill yang dimasukkan dalam jawaban oleh @Amber;
Saya berasumsi maksud Anda membuat array kosong tapi diinisialisasi array. Misalnya, Anda menginginkan hasil akhir seperti di bawah ini dari array 3 array :
$final_array = array(array(), array(), array());
Ini sederhana untuk hanya memasukkan kode, tetapi untuk larik berukuran arbitrer seperti larik 3 larik dari 3 larik itu mulai menjadi rumit untuk diinisialisasi sebelum digunakan:
$final_array = array(array(array(), array(), array()), array(array(), array(), array()), array(array(), array(), array()));
... dll ...
Saya mendapatkan frustrasi. Alangkah baiknya memiliki cara mudah untuk mendeklarasikan array yang diinisialisasi dari kedalaman apa pun untuk digunakan tanpa memeriksa atau melempar kesalahan.
sumber
jawaban atli sangat membantu saya memahami ini. Berikut adalah contoh cara melakukan iterasi melalui array dua dimensi. Contoh ini menunjukkan cara menemukan nilai untuk nama yang diketahui dari sebuah array dan juga foreach di mana Anda hanya menelusuri semua bidang yang Anda temukan di sana. Saya harap ini membantu seseorang.
$array = array( 0 => array( 'name' => 'John Doe', 'email' => '[email protected]' ), 1 => array( 'name' => 'Jane Doe', 'email' => '[email protected]' ), ); foreach ( $array as $groupid => $fields) { echo "hi element ". $groupid . "\n"; echo ". name is ". $fields['name'] . "\n"; echo ". email is ". $fields['email'] . "\n"; $i = 0; foreach ($fields as $field) { echo ". field $i is ".$field . "\n"; $i++; } }
Keluaran:
hi element 0 . name is John Doe . email is [email protected] . field 0 is John Doe . field 1 is [email protected] hi element 1 . name is Jane Doe . email is [email protected] . field 0 is Jane Doe . field 1 is [email protected]
sumber
Dan bagi saya argumen tentang apakah sebuah array harus jarang atau tidak tergantung pada konteksnya.
Misalnya, jika $ a [6] [9] tidak terisi sama dengan $ a [6] [9] yang diisi misalnya dengan "" atau 0.
sumber
$r = array("arr1","arr2");
untuk menggemakan satu elemen array, Anda harus menulis:
echo $r[0]; echo $r[1];
keluarannya adalah:
arr1 arr2
sumber
Dan saya suka cara ini:
$cars = array ( array("Volvo",22), array("BMW",15), array("Saab",5), array("Land Rover",17) );
sumber
Jika Anda ingin dengan cepat membuat array multidimensi untuk nilai sederhana menggunakan satu liner, saya akan merekomendasikan menggunakan library array ini untuk melakukannya seperti ini:
$array = Arr::setNestedElement([], '1.2.3', 'value');
yang akan menghasilkan
[ 1 => [ 2 => [ 3 => 'value' ] ] ]
sumber
Anda dapat mencoba ini, tetapi nilai dimensi kedua akan sama dengan indeks:
$array = array_fill_keys(range(0,5), range(0,5));
sedikit lebih rumit untuk array kosong:
$array = array_fill_keys(range(0, 5), array_fill_keys(range(0, 5), null));
sumber
Anda perlu mendeklarasikan sebuah array di array lain.
$arr = array(array(content), array(content));
Contoh:
$arr = array(array(1,2,3), array(4,5,6));
Untuk mendapatkan item pertama dari array, Anda akan menggunakan
$arr[0][0]
, itu seperti item pertama dari array pertama dari array.$arr[1][0]
akan mengembalikan item pertama dari larik kedua dari larik.sumber