Perbedaan PHP antara array () dan []


148

Saya sedang menulis aplikasi PHP dan saya ingin memastikan itu akan berfungsi tanpa kesalahan.

Kode asli:

<?php
$data = array('name' => 'test',
              'id'   => 'theID');

echo form_input($data);
?>

Apakah yang berikut ini berfungsi tanpa kesalahan atau tidak disarankan karena alasan tertentu?

<?= form_input(['name' => 'test', 'id' => 'theID']); ?>

Apakah ada perbedaan?

Saya telah melihat kembali data tentang array()dan metode array pendek dengan tanda kurung []di PHP.net tapi saya tidak yakin.

Dan juga, apakah tag php pendek <?= ?>baik untuk digaungkan? Apakah ada masalah versi? (disediakan diaktifkan di php.ini)


1
Sintaks array pendek diperkenalkan di PHP 5.4, tidak ada perbedaan dan metode lama tidak akan dihapus, jadi aman untuk digunakan. Tag pendek biasanya disukai, saya tidak akan menggunakannya.
JimL

2
Tks, ada referensi / alasan tidak menggunakan tag pendek php?
Mr.Web

7
Meskipun <? =?> Sebenarnya tidak dianggap sebagai shorttag, mereka tidak dinonaktifkan dengan afaik shorttag standar sehingga mereka seharusnya baik untuk gema sederhana.
Alexander Varwijk


1
Bacaan menarik pada tag <? =?>. Menurut salah satu komentar "Rasmus Lerdorf sendiri yang membuatnya sangat berkomitmen" programmer.stackexchange.com/questions/151661/…
johnsnails

Jawaban:


223

Berikut []ini didukung dalam PHP> = 5.4:

['name' => 'test', 'id' => 'theID']

Ini hanya sintaks pendek dan dalam PHP <5,4 itu tidak akan berfungsi .


Tampaknya 5.3.24 mendukung sintaks ini juga. (tidak dapat mengkonfirmasi secara langsung)
Alberto

3
apakah ada bedanya?
Ali Akbar Azizi

26
@ CoPer, Tidak, kecuali Anda menghitung panjang pengetikan.
The Alpha

7
Saya ingin referensi dan menemukan ini- php.net/manual/en/language.types.array.php - "Pada PHP 5.4 Anda juga dapat menggunakan sintaks array pendek, yang menggantikan array () dengan []."
mrwaim

1
@ Prof83, Anda dapat $data = new stdClass();$data->someProp = 'someValue';menggunakan PHPkelas standar dan $obj = (object) ['foo'=>'bar', 'baz'=>'biz'];untuk mengkonversi array (menggunakan tipe eksplisit casting) ke objek (stdClass) tetapi mengenai {}, itu bisa diimplementasikan di masa depan tetapi tidak yakin tho :-)
The Alpha

19

Pada 2019, sudah 7 tahun sejak []sintaks ditambahkan. Itu cukup lama untuk dihapus array()kecuali dalam program lawas lama, menurut saya.


3
@TheAlpha yah, bahkan hari ini, saya ingin tahu apakah ada perbedaan kinerja
Cid

Apakah Anda mengukur? Saya menganggap mereka hanya sintaks alternatif, yang seharusnya tidak dapat diukur.
David Spector

6

Jika Anda menggunakan versi 5.3 atau sebelumnya maka Anda tidak bisa menggunakan []sebagai array maupun asosiatif array. Jika Anda menggunakan versi PHP 5.4 atau yang lebih baru maka Anda dapat menggunakan salah satu array()atau []untuk membuat array, array asosiatif atau bahkan array multidimensi.



-13

Menggunakan php 7.2, bagi saya sepertinya bukan [saya sebuah array] {I am array tampaknya berfungsi}. Perbedaan antara {}dan []. Kode saya

<p>
  <label for="post_category"> Cat 1 </label>
  <input type="checkbox" name="post_category{first}" value="cat1">
  <br />
  <label for="post_category{second}"> Cat 2 </label>
  <input type="checkbox" name="post_category" value="cat2">
</p>

15
Di mana PHP-nya? Anda sedang menulis HTML.
domdambrogia

1
Juga, kurung kurawal TIDAK akan berfungsi untuk kasus yang ditanyakan OP. Anda tidak dapat membuat array dengan kurung kurawal, hanya mengakses elemen array (sejak v5.4 hingga sekarang - v7.3).
Aydin4ik
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.