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' => 'john@example.com'
),
1 => array(
'name' => 'Jane Doe',
'email' => 'jane@example.com'
),
);
Yang mana setara dengan
$array = array();
$array[0] = array();
$array[0]['name'] = 'John Doe';
$array[0]['email'] = 'john@example.com';
$array[1] = array();
$array[1]['name'] = 'Jane Doe';
$array[1]['email'] = 'jane@example.com';
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);
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.
count
pada dimensi yang tepat, misalnya count($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));
}
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.
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
.
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.
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' => 'john@example.com'
),
1 => array(
'name' => 'Jane Doe',
'email' => 'jane@example.com'
),
);
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 john@example.com
. field 0 is John Doe
. field 1 is john@example.com
hi element 1
. name is Jane Doe
. email is jane@example.com
. field 0 is Jane Doe
. field 1 is jane@example.com
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.
$r = array("arr1","arr2");
untuk menggemakan satu elemen array, Anda harus menulis:
echo $r[0];
echo $r[1];
keluarannya adalah: arr1 arr2
Dan saya suka cara ini:
$cars = array
(
array("Volvo",22),
array("BMW",15),
array("Saab",5),
array("Land Rover",17)
);
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'
]
]
]
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));
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.