Viết tắt cho mảng: có cú pháp chữ như {} hoặc [] không?


84

Viết tắt cho ký hiệu mảng trong PHP là gì?

Tôi đã cố gắng sử dụng (không hoạt động):

$list = {};

Sẽ rất hoàn hảo nếu bạn cung cấp liên kết về một số thông tin về các viết tắt khác cho PHP.


Có nhiều hàm có thể được sử dụng để tạo mảng trong các trường hợp đặc biệt (ví dụ: str_split), nhưng tôi cho rằng đó không phải là điều bạn đang nói.
Matthew

PHP không. Nhưng phpreboot và pihipi cung cấp cú pháp mới thử nghiệm.
mario

Câu trả lời:


135

Cập nhật:
Kể từ phiên bản PHP 5.4.0, một cú pháp rút gọn để khai báo mảng đã được giới thiệu:

$list = [];

Câu trả lời trước:

Không có. Chỉ $list = array();Nhưng bạn chỉ có thể bắt đầu thêm các phần tử.

<?php
$list[] = 1;
$list['myKey'] = 2;
$list[42] = 3;

Đối với PHP là hoàn toàn ổn. Bạn thậm chí sẽ không nhận được E_NOTICE cho các biến không xác định .

Lỗi mức E_NOTICE được đưa ra trong trường hợp làm việc với các biến chưa được khởi tạo, tuy nhiên không phải trong trường hợp nối các phần tử vào mảng chưa được khởi tạo.

Đối với các phương pháp tốc ký, có rất nhiều rải rác khắp nơi. Nếu bạn muốn tìm chúng, chỉ cần đọc Sách hướng dẫn .

Một số ví dụ, chỉ để bạn giải trí:

  1. $arr[]viết tắt cho array_push.
  2. Cấu foreachtrúc
  3. echo $string1, $string2, $string3;
  4. Nối mảng với +
  5. Sự tồn tại của elseif
  6. Nhúng biến trong chuỗi, $name = 'Jack'; echo "Hello $name";

6
PHP lén lút như vậy.
GWW

1
Tôi đã sử dụng PHP một cách chuyên nghiệp trong nhiều năm, tôi phải hỏi đồng nghiệp về $results[] = $row;ý nghĩa của nó.
Josue Alexander Ibarra

4
$ kết quả [] = $ hàng; thực sự là nhanh hơn rất nhiều so với array_push ($ kết quả, $ row)
Daniklad

Sau tất cả thời gian này, tôi nghĩ rằng $var = [];đã được giới thiệu với PHP7. Không có ý tưởng rằng nó đã trở lại xa như 5,4!
IncredibleHat

46

CÓ, nó tồn tại !!

Trích xuất từ ​​một câu hỏi Stack Overflow khác:

Cú pháp rút gọn cho mảng đã được sửa lại, chấp nhận và hiện đang được phát hành với PHP 5.4

Sử dụng:

$list = [];

Tham khảo: PHP 5.4 Short Hand for Arrays


Đối với bất kỳ ai cũng mắc lỗi này, hãy sử dụng =>thay vì :giữa các khóa và giá trị!
clabe45

30

Cũng có thể xác định nội dung bên trong [] như vậy:

  $array = ['vaue1', 'value2', 'key3'=>['value3', 'value4']];

Điều này sẽ chỉ hoạt động trong php5.4 trở lên.


1
Tôi nghĩ rằng tốt hơn là viết 5,4 trở lên (trong 5,6 nó hoạt động). Xin lưu ý rằng đây là cách làm việc duy nhất để khai báo một mảng dưới dạng hằng số lớp (ví dụ: const x = ["a", "b"];) vì const x = array (....) không hoạt động
Pierpaolo Cira


4

Không, nó đã được đề xuất và bị cộng đồng từ chối, vì vậy hiện tại chỉ có cú pháp cho mảng là array () .


3

Cách duy nhất để xác định một mảng trong php là bằng array()cấu trúc ngôn ngữ. PHP không có cách viết tắt cho các ký tự mảng như một số ngôn ngữ khác.


3

Bạn có thể khai báo mảng của mình như sau:

$myArray1 = array(num1, num2, num3);
$myArray2 = array('string1', 'string2', 'string3');
$myArray3 = array( 'stringkey1'=>'stringvalue1', 'stringkey2'=>'stringvalue2');
$myArray4 = array( 'stringkey1'=>numValue1, 'stringkey2'=>numValue2);
$myArray5 = array( numkey1=>'stringvalue1', numkey2=>'stringvalue2');
$myArray6 = array( numkey1=>numValue1, numkey2=>numValue2);

Bạn có thể có nhiều mảng nhúng tùy ý.


Điều này sẽ tạo ra thông báo về các hằng số không xác định.
Popnoodles

2

Tôi chỉ bùng nổ các chuỗi thành một mảng như vậy:

$array = explode(",","0,1,2,3,4,5,6,7,8,9,10");
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.