Xóa mục khỏi mảng kết hợp PHP

Hôm nay chúng ta sẽ viết một bài viết ngắn về cách loại bỏ các khóa khỏi một mảng kết hợp trong PHP và lấy một mảng không có khóa để trả về một mảng reindex mới bắt đầu bằng chỉ mục 0

Tham khảo bài viết lấy key từ mảng kết hợp trong PHP

Các cách xóa khóa khỏi mảng kết hợp

  1. Sử dụng chức năng tích hợp
  2. Sử dụng chức năng tùy chỉnh

1. Sử dụng chức năng tích hợp

Chúng ta có sẵn hàm array_values() để loại bỏ các khóa và tạo lại mảng với các khóa mới bắt đầu từ 0. Nó trả về một mảng giá trị được lập chỉ mục

Các đối tượng JavaScript có thể được chấp nhận dưới dạng các khóa ánh xạ mảng kết hợp tới các giá trị. Để xóa khóa khỏi một đối tượng trong JavaScript, bạn có thể sử dụng toán tử xóa

Mục lục Hiển thị

  • chức năng hữu ích
  • Mảng nên và không nên
  • Chuyển đổi thành mảng
  • Giải nén mảng
  • Làm thế nào để bạn loại bỏ một phần tử từ một mảng kết hợp?
  • Làm cách nào để bạn xóa một khóa khỏi một mảng?
  • Làm cách nào để xóa khóa và giá trị của khóa khỏi mảng kết hợp?
  • Hàm Array_splice() làm gì cho ví dụ?

Xóa mục khỏi mảng kết hợp PHP

Javascript xóa khóa khỏi đối tượng

const obj = {tên trang web. bảng điều khiển 'w3docs' }. nhật ký (obj. hasOwnProperty('siteName')); . nhật ký (obj. hasOwnProperty('siteName'));

Khi thao tác xóa được áp dụng cho thuộc tính chỉ mục của Mảng, bạn sẽ tạo một mảng có mật độ dân cư thưa thớt, mảng có chỉ mục bị thiếu

Khi làm việc với các thể hiện của Array, nếu bạn không muốn tạo một mảng thưa thớt, thì bạn có thể sử dụng các phương thức Array#splice hoặc Array#splice

Mảng có chỉ mục được đặt tên được gọi là mảng kết hợp. Trong JavaScript, mảng luôn sử dụng chỉ mục được đánh số. Mảng kết hợp là đối tượng chữ

Toán tử xóa được sử dụng để xóa khóa khỏi đối tượng. Nó sẽ tự động được giải phóng nếu không có thêm tham chiếu nào đến cùng một khóa được giữ. Nó sẽ trả về true nếu việc xóa thành công, nếu không nó sẽ trả về false. Tuy nhiên, nếu khóa mà bạn đang cố xóa không tồn tại, toán tử sẽ không có tác dụng và sẽ trả về true

Mảng array trong PHP thực chất là một bản đồ có thứ tự. Bản đồ là một loại liên kết các giá trị với các khóa. Loại này được tối ưu hóa cho một số mục đích sử dụng khác nhau; . Vì các giá trị của mảng có thể là mảng khác, cây và đa chiều arrays are also possible.

Giải thích về các cấu trúc dữ liệu đó nằm ngoài phạm vi của sách hướng dẫn này, nhưng ít nhất một ví dụ được cung cấp cho mỗi cấu trúc đó. Để biết thêm thông tin, hãy xem tài liệu đáng kể tồn tại về chủ đề rộng lớn này

cú pháp

Chỉ định với array()

Có thể tạo một mảng bằng cách sử dụng array() language construct. It takes any number of comma-separated

array(1) {
  [1]=>
  string(1) "d"
}
5 pairs as arguments.

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)

Dấu phẩy sau phần tử mảng cuối cùng là tùy chọn và có thể bỏ qua. Điều này thường được thực hiện cho các mảng một dòng, tôi. e.

array(1) {
  [1]=>
  string(1) "d"
}
6 được ưu tiên hơn
array(1) {
  [1]=>
  string(1) "d"
}
7. Mặt khác, đối với các mảng nhiều dòng, dấu phẩy ở cuối thường được sử dụng, vì nó cho phép dễ dàng thêm các phần tử mới vào cuối

Ghi chú

Có một cú pháp mảng ngắn thay thế

array(1) {
  [1]=>
  string(1) "d"
}
8 bằng
array(1) {
  [1]=>
  string(1) "d"
}
9

Ví dụ #1 Một mảng đơn giản

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
0

Khóa key có thể là int hoặc a . string. The giá trị có thể thuộc bất kỳ loại nào.

Ngoài ra, phím sau sẽ diễn ra.

  • Chuỗi s chứa số thập phân hợp lệ int s, trừ khi số đó đứng trước dấu
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    1, . e. g. khóa
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    2 sẽ thực sự được lưu trữ trong
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    3. Mặt khác,
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    4 sẽ không được truyền, vì nó không phải là số nguyên thập phân hợp lệ. int type. E.g. the key
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    2 will actually be stored under
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    3. On the other hand
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    4 will not be cast, as it isn't a valid decimal integer.
  • Float s cũng được chuyển thành int s, nghĩa là phần phân số sẽ bị cắt bớt. e. g. khóa
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    5 sẽ thực sự được lưu trữ trong
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    3.
  • Bool s cũng được chuyển thành int s, tôi. e. khóa
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    7 sẽ thực sự được lưu trữ trong
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    8 và khóa
    array(4) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(3) "foo"
      [100]=>
      int(-100)
      [-100]=>
      int(100)
    }
    
    9 trong
    array(
        key  => value,
        key2 => value2,
        key3 => value3,
        ...
    )
    60.
  • Null sẽ được chuyển thành chuỗi rỗng, i. e. khóa
    array(
        key  => value,
        key2 => value2,
        key3 => value3,
        ...
    )
    61 sẽ thực sự được lưu trữ trong
    array(
        key  => value,
        key2 => value2,
        key3 => value3,
        ...
    )
    62.
  • Mảng s và đối tượng s làm khóa. Làm như vậy sẽ dẫn đến một cảnh báo.
    array(
        key  => value,
        key2 => value2,
        key3 => value3,
        ...
    )
    63.

Nếu nhiều phần tử trong khai báo mảng sử dụng cùng một khóa, thì chỉ phần tử cuối cùng sẽ được sử dụng vì tất cả các phần tử khác đều bị ghi đè

Ví dụ #2 Ví dụ về truyền và ghi đè loại

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
64

Ví dụ trên sẽ xuất ra

array(1) {
  [1]=>
  string(1) "d"
}

Vì tất cả các khóa trong ví dụ trên được chuyển thành

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
8, giá trị sẽ được ghi đè trên mọi phần tử mới và giá trị được gán cuối cùng
array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
66 là giá trị duy nhất còn lại

Mảng PHP có thể chứa các khóa intchuỗi tại .

Ví dụ #3 Hỗn hợp khóa intchuỗi <

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
67

Ví dụ trên sẽ xuất ra

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}

Khóa key là tùy chọn. Nếu nó không được chỉ định, PHP sẽ sử dụng phần tăng của khóa int lớn nhất đã sử dụng trước đó.

Ví dụ #4 Các mảng được lập chỉ mục không có khóa

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
68

Ví dụ trên sẽ xuất ra

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
6

Có thể chỉ định khóa cho một số phần tử và bỏ nó cho những phần tử khác

Ví dụ #5 Phím không có trên tất cả các phần tử

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
69

Ví dụ trên sẽ xuất ra

array(1) {
  [1]=>
  string(1) "d"
}
9

Như bạn có thể thấy giá trị cuối cùng

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
66 đã được gán khóa
array(1) {
  [1]=>
  string(1) "d"
}
91. Điều này là do khóa số nguyên lớn nhất trước đó là
array(1) {
  [1]=>
  string(1) "d"
}
92

Ví dụ #6 Ví dụ về ghi đè và truyền kiểu phức tạp

Ví dụ này bao gồm tất cả các biến thể của kiểu truyền khóa và ghi đè các phần tử

array(1) {
  [1]=>
  string(1) "d"
}
93

Ví dụ trên sẽ xuất ra

array(1) {
  [1]=>
  string(1) "d"
}
4

Truy cập các phần tử mảng bằng cú pháp dấu ngoặc vuông

Các phần tử mảng có thể được truy cập bằng cú pháp

array(1) {
  [1]=>
  string(1) "d"
}
94

Ví dụ #7 Truy cập các phần tử mảng

array(1) {
  [1]=>
  string(1) "d"
}
95

Ví dụ trên sẽ xuất ra

array(1) {
  [1]=>
  string(1) "d"
}
7

Ghi chú

Trước PHP 8. 0. 0, dấu ngoặc vuông và dấu ngoặc nhọn có thể được sử dụng thay thế cho nhau để truy cập các phần tử mảng (e. g.

array(1) {
  [1]=>
  string(1) "d"
}
96 và
array(1) {
  [1]=>
  string(1) "d"
}
97 đều sẽ làm điều tương tự trong ví dụ trên). Cú pháp dấu ngoặc nhọn không được dùng nữa kể từ PHP 7. 4. 0 và không còn được hỗ trợ kể từ PHP 8. 0. 0

Ví dụ #8 Hội thảo mảng

array(1) {
  [1]=>
  string(1) "d"
}
98

Ghi chú

Cố gắng truy cập một khóa mảng chưa được xác định cũng giống như truy cập bất kỳ biến chưa xác định nào khác. một thông báo lỗi cấp độ

array(1) {
  [1]=>
  string(1) "d"
}
99 (cấp độ ______340 trước PHP 8. 0. 0) sẽ được cấp và kết quả sẽ là
array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
61

Ghi chú

Hủy bỏ hội thảo mảng một giá trị vô hướng không phải là chuỗi mang lại kết quả là

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
61. Trước PHP 7. 4. 0, điều đó không đưa ra thông báo lỗi. Kể từ PHP 7. 4. 0, vấn đề này
array(1) {
  [1]=>
  string(1) "d"
}
40; . 0. 0, vấn đề này
array(1) {
  [1]=>
  string(1) "d"
}
99.

Tạo/sửa đổi với cú pháp dấu ngoặc vuông

Mảng hiện có có thể được sửa đổi bằng cách đặt rõ ràng các giá trị trong đó.

Điều này được thực hiện bằng cách gán các giá trị cho mảng , chỉ định khóa trong ngoặc đơn. Khóa cũng có thể được bỏ qua, dẫn đến một cặp dấu ngoặc trống (

array(1) {
  [1]=>
  string(1) "d"
}
9).

array(1) {
  [1]=>
  string(1) "d"
}
8

Nếu $arr chưa tồn tại hoặc được đặt thành

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
61 hoặc
array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
9, nó sẽ được tạo, vì vậy đây cũng là một cách khác để tạo mảng. This practice is however discouraged because if $arr already contains some value (e.g. chuỗi từ biến yêu cầu) thì giá trị này sẽ giữ nguyên vị trí và
array(1) {
  [1]=>
  string(1) "d"
}
9 thực sự có thể đại diện cho toán tử truy cập chuỗi. Tốt hơn hết là khởi tạo một biến bằng cách gán trực tiếp.

Ghi chú. Kể từ PHP 7. 1. 0, áp dụng toán tử chỉ mục trống trên chuỗi sẽ gây ra lỗi nghiêm trọng. Trước đây, chuỗi được chuyển đổi âm thầm thành một mảng.

Ghi chú. Kể từ PHP 8. 1. 0, việc tạo một mảng mới từ giá trị

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
9 không được dùng nữa. Tạo một mảng mới từ
array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
61 và các giá trị không xác định vẫn được cho phép.

Để thay đổi một giá trị nhất định, hãy gán giá trị mới cho phần tử đó bằng khóa của nó. Để xóa một cặp khóa/giá trị, hãy gọi hàm unset() trên đó.

array(1) {
  [1]=>
  string(1) "d"
}
71

Ghi chú

Như đã đề cập ở trên, nếu không có khóa nào được chỉ định, thì tối đa các chỉ số int hiện có sẽ được sử dụng và khóa mới sẽ là khóa đó . Nếu chưa có int chỉ số, khóa sẽ là

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
60 (không).

Lưu ý rằng khóa số nguyên tối đa được sử dụng cho việc này hiện không cần tồn tại trong mảng . Nó chỉ cần tồn tại trong mảng tại một thời điểm nào đó kể từ lần cuối cùng mảng was re-indexed. The following example illustrates:

array(1) {
  [1]=>
  string(1) "d"
}
73

Ví dụ trên sẽ xuất ra

array(1) {
  [1]=>
  string(1) "d"
}
7

Phá hủy mảng

Mảng có thể được hủy cấu trúc bằng cách sử dụng

array(1) {
  [1]=>
  string(1) "d"
}
9 (kể từ PHP 7. 1. 0) hoặc list() cấu trúc ngôn ngữ. Các cấu trúc này có thể được sử dụng để hủy cấu trúc một mảng thành các biến riêng biệt.

array(1) {
  [1]=>
  string(1) "d"
}
75

array(1) {
  [1]=>
  string(1) "d"
}
76

array(1) {
  [1]=>
  string(1) "d"
}
77

Phá hủy mảng có thể được sử dụng trong foreach để hủy cấu trúc một mảng đa chiều trong khi lặp lại nó

array(1) {
  [1]=>
  string(1) "d"
}
78

array(1) {
  [1]=>
  string(1) "d"
}
79

array(1) {
  [1]=>
  string(1) "d"
}
80

Các phần tử của mảng sẽ bị bỏ qua nếu không cung cấp biến. Quá trình phá hủy mảng luôn bắt đầu tại chỉ mục

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
60

array(1) {
  [1]=>
  string(1) "d"
}
82

array(1) {
  [1]=>
  string(1) "d"
}
83

array(1) {
  [1]=>
  string(1) "d"
}
84

Kể từ PHP 7. 1. 0, mảng kết hợp cũng có thể bị hủy cấu trúc. Điều này cũng cho phép dễ dàng lựa chọn đúng phần tử trong các mảng được lập chỉ mục bằng số vì chỉ mục có thể được chỉ định rõ ràng

array(1) {
  [1]=>
  string(1) "d"
}
85

array(1) {
  [1]=>
  string(1) "d"
}
83

array(1) {
  [1]=>
  string(1) "d"
}
87

Phá hủy mảng có thể được sử dụng để dễ dàng hoán đổi hai biến

array(1) {
  [1]=>
  string(1) "d"
}
88

array(1) {
  [1]=>
  string(1) "d"
}
76

array(1) {
  [1]=>
  string(1) "d"
}
70

Ghi chú

Toán tử trải rộng (

array(1) {
  [1]=>
  string(1) "d"
}
71) không được hỗ trợ trong các bài tập

Ghi chú

Cố gắng truy cập một khóa mảng chưa được xác định cũng giống như truy cập bất kỳ biến chưa xác định nào khác. một thông báo lỗi cấp độ

array(1) {
  [1]=>
  string(1) "d"
}
99 (cấp độ ______340 trước PHP 8. 0. 0) sẽ được cấp và kết quả sẽ là
array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
61

chức năng hữu ích

Có khá nhiều hàm hữu ích để làm việc với mảng. Xem phần hàm mảng

Ghi chú

Hàm unset() cho phép xóa khóa khỏi mảng. Be aware that the array will not be reindexed. If a true "remove and shift" behavior is desired, the mảng có thể được lập chỉ mục lại bằng cách sử dụng array_values()< . function.

array(1) {
  [1]=>
  string(1) "d"
}
75

Cấu trúc điều khiển foreach tồn tại riêng cho mảng s. Nó cung cấp một cách dễ dàng để duyệt qua một mảng .

Mảng nên và không nên

Tại sao
array(1) {
  [1]=>
  string(1) "d"
}
76 sai?

Luôn sử dụng dấu ngoặc kép xung quanh chỉ mục mảng chuỗi ký tự. Ví dụ:

array(1) {
  [1]=>
  string(1) "d"
}
77 đúng, trong khi
array(1) {
  [1]=>
  string(1) "d"
}
76 thì không. Nhưng tại sao?

array(1) {
  [1]=>
  string(1) "d"
}
79

Điều này là sai, nhưng nó hoạt động. Lý do là mã này có hằng số không xác định (

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
40) chứ không phải là chuỗi (
array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
41 - chú ý dấu ngoặc kép). Nó hoạt động vì PHP tự động chuyển đổi một chuỗi rỗng (một chuỗi không tương ứng với bất kỳ ký hiệu đã biết nào) thành một string which contains the bare string. For instance, if there is no defined constant named
array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
40, then PHP will substitute in the chuỗi
array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
41 và sử dụng hằng số đó.

Cảnh báo

Dự phòng để xử lý hằng số không xác định dưới dạng chuỗi trống gây ra lỗi cấp độ

array(1) {
  [1]=>
  string(1) "d"
}
40. Điều này đã không được chấp nhận kể từ PHP 7. 2. 0 và đưa ra lỗi cấp độ
array(1) {
  [1]=>
  string(1) "d"
}
99. Kể từ PHP 8. 0. 0, nó đã bị xóa và đưa ra một Lỗi ngoại lệ.

Ghi chú. Điều này không có nghĩa là luôn trích dẫn khóa. Không trích dẫn các khóa là hằng số hoặc biến, vì điều này sẽ ngăn PHP diễn giải chúng.

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
46

Ví dụ trên sẽ xuất ra

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
4

Thêm ví dụ để chứng minh hành vi này

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
47

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
48

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
49

Khi error_reporting được đặt để hiển thị các lỗi ở cấp độ

array(1) {
  [1]=>
  string(1) "d"
}
40 (ví dụ: bằng cách đặt thành
array(1) {
  [1]=>
  string(1) "d"
}
01), những cách sử dụng đó sẽ hiển thị ngay lập tức. Theo mặc định, error_reporting được đặt để không hiển thị thông báo

Như đã nêu trong phần cú pháp, nội dung bên trong dấu ngoặc vuông ('

array(1) {
  [1]=>
  string(1) "d"
}
76' và '
array(1) {
  [1]=>
  string(1) "d"
}
03') phải là một biểu thức. Điều này có nghĩa là mã như thế này hoạt động

array(1) {
  [1]=>
  string(1) "d"
}
04

Đây là một ví dụ về việc sử dụng giá trị trả về của hàm làm chỉ mục mảng. PHP cũng biết về hằng số

array(1) {
  [1]=>
  string(1) "d"
}
05

Lưu ý rằng

array(1) {
  [1]=>
  string(1) "d"
}
06 cũng là một mã định danh hợp lệ, giống như
array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
40 trong ví dụ đầu tiên. Nhưng ví dụ cuối cùng trên thực tế cũng giống như cách viết

array(1) {
  [1]=>
  string(1) "d"
}
08

bởi vì

array(1) {
  [1]=>
  string(1) "d"
}
06 bằng
array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}
8, v.v.

Vậy tại sao nó lại xấu?

Tại một thời điểm nào đó trong tương lai, nhóm PHP có thể muốn thêm một hằng số hoặc từ khóa khác hoặc một hằng số trong mã khác có thể gây trở ngại. Ví dụ: sử dụng các từ

array(1) {
  [1]=>
  string(1) "d"
}
11 và
array(1) {
  [1]=>
  string(1) "d"
}
12 theo cách này là sai vì chúng là các từ khóa dành riêng

Ghi chú. Xin nhắc lại, bên trong một chuỗi có dấu ngoặc kép, việc không bao quanh các chỉ mục mảng bằng dấu ngoặc kép là hợp lệ, vì vậy

array(1) {
  [1]=>
  string(1) "d"
}
13 là hợp lệ. Xem các ví dụ trên để biết chi tiết về lý do tại sao cũng như phần phân tích cú pháp biến trong chuỗi.

Chuyển đổi thành mảng

Đối với bất kỳ loại int , float , . Nói cách khác,

array(1) {
  [1]=>
  string(1) "d"
}
14 hoàn toàn giống với
array(1) {
  [1]=>
  string(1) "d"
}
15. string, bool and resource, converting a value to an array results in an array with a single element with index zero and the value of the scalar which was converted. In other words,
array(1) {
  [1]=>
  string(1) "d"
}
14 is exactly the same as
array(1) {
  [1]=>
  string(1) "d"
}
15.

Nếu một đối tượng được chuyển đổi thành một mảng , . Các khóa là tên biến thành viên, với một vài ngoại lệ đáng chú ý. thuộc tính số nguyên không thể truy cập được; . Các giá trị được thêm vào trước này có các byte

array(1) {
  [1]=>
  string(1) "d"
}
16 ở hai bên. Các thuộc tính đã nhập chưa được khởi tạo sẽ bị loại bỏ một cách âm thầm. array whose elements are the object's properties. The keys are the member variable names, with a few notable exceptions: integer properties are unaccessible; private variables have the class name prepended to the variable name; protected variables have a '*' prepended to the variable name. These prepended values have
array(1) {
  [1]=>
  string(1) "d"
}
16 bytes on either side. Uninitialized typed properties are silently discarded.

array(1) {
  [1]=>
  string(1) "d"
}
17

Ví dụ trên sẽ xuất ra

array(1) {
  [1]=>
  string(1) "d"
}
0

Những

array(1) {
  [1]=>
  string(1) "d"
}
16 này có thể dẫn đến một số hành vi không mong muốn

array(1) {
  [1]=>
  string(1) "d"
}
19

array(1) {
  [1]=>
  string(1) "d"
}
20

array(1) {
  [1]=>
  string(1) "d"
}
21

Ví dụ trên sẽ xuất ra

array(1) {
  [1]=>
  string(1) "d"
}
1

Ở trên dường như có hai khóa có tên 'AA', mặc dù một trong số chúng thực sự có tên '\0A\0A'

Chuyển đổi

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)
61 thành một mảng dẫn đến một mảng.

Giải nén mảng

Một mảng có tiền tố là

array(1) {
  [1]=>
  string(1) "d"
}
71 sẽ được mở rộng tại chỗ trong quá trình định nghĩa mảng. Chỉ có thể mở rộng các mảng và đối tượng triển khai Traversable . Giải nén mảng với
array(1) {
  [1]=>
  string(1) "d"
}
71 có sẵn kể từ PHP 7. 4. 0.

Có thể mở rộng nhiều lần và thêm các phần tử thông thường vào trước hoặc sau toán tử

array(1) {
  [1]=>
  string(1) "d"
}
71

Bạn có thể xóa các phần tử khỏi một mảng kết hợp không?

Nếu muốn xóa một phần tử khỏi mảng, bạn chỉ cần dùng hàm unset() . Ví dụ sau đây cho thấy cách xóa một phần tử khỏi mảng kết hợp và mảng số.

PHP có chức năng lật không?

PHP. hàm array_flip() . e. , trao đổi tất cả các khóa với các giá trị được liên kết của chúng trong một mảng và ngược lại. Chúng ta phải nhớ rằng các giá trị của mảng cần phải là các khóa hợp lệ, tôi. e. chúng cần phải là số nguyên hoặc chuỗi. This built-in function of PHP is used to exchange elements within an array, i.e., exchange all keys with their associated values in an array and vice-versa. We must remember that the values of the array need to be valid keys, i.e. they need to be either integer or string.

Làm cách nào để tìm sự khác biệt giữa hai mảng trong PHP?

Hàm array_diff() so sánh giá trị của hai (hoặc nhiều) mảng và trả về sự khác biệt. Hàm này so sánh các giá trị của hai (hoặc nhiều) mảng và trả về một mảng chứa các mục từ mảng1 không có trong mảng2 hoặc mảng3, v.v.

Làm cách nào chúng ta có thể lấy số lượng phần tử trong một mảng trong PHP?

Hàm đếm() trả về số lượng phần tử trong một mảng.