Hướng dẫn phpdoc array of objects - mảng đối tượng phpdoc

Tôi thích đọc và viết mã sạch - như được nêu trong "Mã sạch" của Robert C. Martin. Khi làm theo sự tín nhiệm của anh ấy, bạn không nên yêu cầu nhà phát triển (với tư cách là người dùng API của bạn) để biết cấu trúc (nội bộ) của mảng của bạn.

Người dùng API có thể hỏi: đó có phải là một mảng chỉ có một chiều không? Là các đối tượng trải rộng trên tất cả các cấp của một mảng đa chiều? Có bao nhiêu vòng lặp lồng nhau (foreach, v.v.) Tôi cần truy cập tất cả các đối tượng? Loại đối tượng nào được "lưu trữ" trong mảng đó?

Khi bạn đã phác thảo, bạn muốn sử dụng mảng đó (có chứa các đối tượng) như một mảng một chiều.

Như Nishi đã phác thảo, bạn có thể sử dụng:

/**
 * @return SomeObj[]
 */

cho điều đó.

Nhưng một lần nữa: Hãy lưu ý - đây không phải là một ký hiệu tài liệu tiêu chuẩn. Ký hiệu này được giới thiệu bởi một số nhà sản xuất IDE.

Được rồi, được rồi, với tư cách là một nhà phát triển, bạn biết rằng "[]" được gắn với một mảng trong PHP. Nhưng "cái gì đó []" có nghĩa là gì trong bối cảnh PHP bình thường? "[]" có nghĩa là: Tạo phần tử mới trong "cái gì đó". Yếu tố mới có thể là tất cả. Nhưng những gì bạn muốn thể hiện là: mảng các đối tượng có cùng loại và loại chính xác của nó. Như bạn có thể thấy, nhà sản xuất IDE giới thiệu một bối cảnh mới. Một bối cảnh mới bạn phải học. Một bối cảnh mới, các nhà phát triển PHP khác phải học (để hiểu các tài liệu của bạn). Phong cách xấu (!).

Bởi vì mảng của bạn có một chiều mà bạn có thể muốn gọi đó là "mảng các đối tượng" là "danh sách". Xin lưu ý rằng "danh sách" có một ý nghĩa rất đặc biệt trong các ngôn ngữ lập trình khác. Ví dụ, sẽ tốt hơn nếu gọi nó là "bộ sưu tập".

Hãy nhớ rằng: bạn sử dụng ngôn ngữ lập trình cho phép bạn tất cả các tùy chọn của OOP. Sử dụng một lớp thay vì một mảng và làm cho lớp học của bạn có thể vượt qua như một mảng. Ví dụ.:

class orderCollection implements ArrayIterator

Hoặc nếu bạn muốn lưu trữ các đối tượng bên trong ở các cấp độ khác nhau trong cấu trúc mảng/đối tượng đa chiều:

class orderCollection implements RecursiveArrayIterator

Giải pháp này thay thế cho mảng của bạn bằng một đối tượng loại "OrderCollection", nhưng không cho phép hoàn thành mã trong IDE của bạn cho đến nay. Được chứ. Bước tiếp theo:

Thực hiện các phương thức được giới thiệu bởi giao diện với docblocks - đặc biệt:

/**
 * [...]
 * @return Order
 */
orderCollection::current()

/**
 * [...]
 * @return integer E.g. database identifier of the order
 */
orderCollection::key()

/**
 * [...]
 * @return Order
 */
orderCollection::offsetGet()

Đừng quên sử dụng loại gợi ý loại cho:

orderCollection::append(Order $order)
orderCollection::offsetSet(Order $order)

Giải pháp này dừng lại giới thiệu rất nhiều:

/** @var $key ... */
/** @var $value ... */

Tất cả các tệp mã của bạn (ví dụ: trong vòng lặp), như Zahymaka đã xác nhận với câu trả lời của cô ấy/anh ấy. Người dùng API của bạn không bị buộc phải giới thiệu DocBlocks đó, phải hoàn thành mã. Để có @return chỉ ở một nơi làm giảm sự dư thừa (@var) càng nhiều càng tốt. Rắc "docblocks với @var" sẽ làm cho mã của bạn dễ đọc nhất.

Finaly bạn đã hoàn thành. Có vẻ khó để đạt được? Có vẻ như lấy một chiếc búa tạ để bẻ khóa một hạt? Không thực sự, vì bạn đã quen thuộc với các giao diện đó và với mã sạch. Hãy nhớ rằng: Mã nguồn của bạn được viết một lần / đọc nhiều.

Nếu mã hoàn thành IDE của bạn không hoạt động với phương pháp này, hãy chuyển sang một phương pháp tốt hơn (ví dụ: Intellij Idea, PhpStorm, NetBeans) hoặc gửi yêu cầu tính năng về trình theo dõi vấn đề của nhà sản xuất IDE của bạn.

Cảm ơn Christian Weiss (từ Đức) vì đã trở thành huấn luyện viên của tôi và đã dạy tôi một thứ tuyệt vời như vậy. Tái bút: Gặp tôi và anh ấy trên Xing.

18

Nội dung chính ShowShow

  • 1.0 Phpstorm & Khối phpdoc tự động tạo
  • 1.1 Trả lại $ this | tĩnh | tự
  • 1.2 Mới (và không phải là mới) Cú pháp mảng
  • 1.3 tự động hoàn thành động & nbsp; (+ dữ liệu từ cơ sở dữ liệu của bạn) thông qua sự hoàn thành sâu thẳm
  • 1.4 Kiểm tra tính bất biến thông qua các phân tích mã tĩnh (thông qua Thi thiên)
  • 1.5 Generics trong PHP thông qua các phân tích mã tĩnh
  • 2.0 Sơ yếu lý lịch
  • Làm thế nào để bạn tìm thấy các phím mảng?
  • Mảng nào đã đặt tên là Keys?
  • Các loại mảng khác nhau có sẵn trong PHP là gì?

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more.
Learn more.

Tôi có:

$myarr['DB'] = new DB();
$myarr['config'] = new config();

Tôi có thể thực hiện bằng cách nào đó phpstorm để biết chính xác những gì bên trong khóa Thouse không? Bây giờ tôi chỉ thấy gợi ý cho các biến và thuộc tính lớp, nhưng không phải là các khóa mảng.

Được hỏi ngày 16 tháng 9 năm 2015 lúc 14:31Sep 16, 2015 at 14:31Sep 16, 2015 at 14:31

1

Câu trả lời muộn, nhưng mọi thứ đã thay đổi.

Theo 2021.2 Changelist bây giờ có thể xác định hình dạng của một mảng đơn giản với một nhận xét dòng:

/**
 * @return array{id: int, name: string, object: \Of\Some\Class}
 */
function getArray(): array {...}

Nếu có các mảng giống như đối tượng trong mã của bạn, giờ đây bạn có thể xác định cấu trúc của chúng với chú thích PHPDOC này: Array {key: type, key: gõ, ...}.

Phpstorm cung cấp hoàn thành mã cho các mảng được chú thích như vậy, giảm thời gian bạn dành cho việc gõ thường xuyên và bảo vệ bạn khỏi những sai lầm.

Hỗ trợ được giới hạn trong các định nghĩa hình dạng mảng một dòng. Đối với các cấu trúc lớn hơn, thường tốt hơn là sử dụng các đối tượng và lớp thực.

Thật không may, tôi chưa tìm thấy cách xác định cấu trúc của mảng đa chiều và thật tuyệt khi chú thích một danh sách các mảng "hình" như vậy ...

Đã trả lời ngày 24 tháng 8 năm 2021 lúc 9:37Aug 24, 2021 at 9:37Aug 24, 2021 at 9:37

SwilkswilkSWilkSWilk

3.1317 Huy hiệu vàng29 Huy hiệu bạc51 Huy hiệu Đồng7 gold badges29 silver badges51 bronze badges7 gold badges29 silver badges51 bronze badges

Bạn có thể xác định các phím mảng trước, sau đó Phpstorm sẽ đề xuất chúng (Ctrl+Space)

$my = array();
$my['qwe'] = '';
$my['asd'] = '';
$my['zxc'] = '';

$my['']// inside '' will be autosuggest

Bạn cũng có thể sử dụng PHPDOC (CTRL+Q):

/**
 * keys:
 * <pre>
 * some_array   (array)
 * some_bool    (boolean)
 * some_double  (double)
 * some_nice_integer    (integer)
 * </pre>
 * @return array
 */
public function toArray(){
    // return some array
}

Đã trả lời ngày 1 tháng 10 năm 2016 lúc 14:40Oct 1, 2016 at 14:40Oct 1, 2016 at 14:40

Đối với một mảng tùy ý, phpstorm không biết các khóa được sử dụng trong bất kỳ mảng nào, và do đó không cung cấp gợi ý ở đó. Thậm chí có thể chứng minh rằng không thể thực hiện một tính năng như vậy một cách đáng tin cậy, vì vậy tôi nghĩ rằng bạn đã hết may mắn ở đây.

Thu thập từ:

Stackoverflow trả lời

Đã trả lời ngày 16 tháng 9 năm 2015 lúc 14:43Sep 16, 2015 at 14:43Sep 16, 2015 at 14:43

Khairul Hồi giáo Hồi giáoKhairul IslamKhairul Islam

1.2091 Huy hiệu vàng9 Huy hiệu bạc 20 Huy hiệu đồng1 gold badge9 silver badges20 bronze badges1 gold badge9 silver badges20 bronze badges

2

class orderCollection implements ArrayIterator
0

Bây giờ, phpstorm, khi gõ

/**
 * @return array{id: int, name: string, object: \Of\Some\Class}
 */
function getArray(): array {...}
2 ..... gợi ý x và y

Lỗi

4.4649 Huy hiệu vàng32 Huy hiệu bạc40 Huy hiệu đồng9 gold badges32 silver badges40 bronze badges9 gold badges32 silver badges40 bronze badges

Đã trả lời ngày 5 tháng 11 năm 2018 lúc 16:33Nov 5, 2018 at 16:33Nov 5, 2018 at 16:33

1

Xuất bản lần đầu tiên tại đây: https://suckup.de/2020/02/modern-phpdoc-annotations/

Chúng tôi sẽ bắt đầu rất đơn giản với Phpstorm và PHPDOC mặc định, sau đó chúng tôi sẽ tăng độ phức tạp từng bước cho đến khi chúng tôi tự động hoàn thành các khóa mảng trực tiếp từ cơ sở dữ liệu với hỗ trợ an toàn, bất biến và loại an toàn.

1.0 Phpstorm & Khối phpdoc tự động tạo

Đối với nhận xét tài liệu, phpstorm cung cấp hoàn thành được bật theo mặc định. PhpStorm tạo các cuống của „PhpDoc chặn khi bạn nhập thẻ /** mở và nhấn enter, hoặc nhấn Alt+chèn và chỉ định cấu trúc mã (một lớp, phương thức, một hàm, v.v.) vào tài liệu. Tùy thuộc vào sự lựa chọn của bạn, phpstorm sẽ tạo các thẻ cần thiết hoặc thêm một sơ khai tài liệu trống.Enter, or press Alt+Insert and appoint the code construct (a class, a method, a function, and so on) to document. Depending on your choice, PhpStorm will create the required tags or add an empty documentation stub.“ –Enter, or press Alt+Insert and appoint the code construct (a class, a method, a function, and so on) to document. Depending on your choice, PhpStorm will create the required tags or add an empty documentation stub.“

https://www.jetbrains.com/help/phpstorm/phpdoc-comments.html

Code:

class orderCollection implements ArrayIterator
2

1.1 Trả lại $ this | tĩnh | tự

Nó khá khó chịu khi bản thân PHP hiện chỉ có „tự là loại trả lại (https://wiki.php.net/rfc/static_return_type) cho lớp hiện tại. Do „ràng buộc tĩnh trễ, bạn có thể sử dụng„ tĩnh trong mã của mình để chỉ phương thức loại A thực sự được gọi, ngay cả khi phương thức được kế thừa. Nhưng trong PHPDOC, bạn đã có thể sử dụng:

  • @return $ this: Nếu bạn thực sự trả lại $ này (ví dụ: đối với giao diện Fluent)$this: if you really return $this (e.g. for fluent interface)$this: if you really return $this (e.g. for fluent interface)
  • @return static: Tham khảo phương thức loại A thực sự đã được gọistatic: refer to the class a method was actually called onstatic: refer to the class a method was actually called on
  • @return tự: Tham khảo phương pháp lớp A đã được viết trongself: refer to the class a method was written inself: refer to the class a method was written in

Code:

class orderCollection implements ArrayIterator
3https://blog.jetbrains.com/phpstorm/2019/09/phpstorm-2019-2-2-is-released/

https://blog.jetbrains.com/phpstorm/2019/09/phpstorm-2019-2-2-is-released/

1.2 Mới (và không phải là mới) Cú pháp mảng

Phpstorm và (Phpstan & Psalm) đang hỗ trợ một số cú pháp mảng mới (và một số không phải mới) cho các loại PHPDOC, nhưng hiện tại PhpStorm sẽ không tự động tạo các loại này.

Examples:

  • int []: Một mảng chỉ có giá trị int - [1, 4, 6, 8, 9, phạm]]: an array with only INT values – [1, 4, 6, 8, 9, …]: an array with only INT values – [1, 4, 6, 8, 9, …]
  • Mảng: Một mảng chỉ có giá trị INT - [4 => 1, 8 => 4, 12 => 6, trên mạng]: an array with only INT values – [4 => 1, 8 => 4, 12 => 6, …]: an array with only INT values – [4 => 1, 8 => 4, 12 => 6, …]
  • Chuỗi []: Một mảng chỉ có giá trị chuỗi - [„foo,„ Bar ,,: an array with only STRING values – [„foo“, „bar“, …]: an array with only STRING values – [„foo“, „bar“, …]
  • Mảng: Một mảng chỉ có giá trị chuỗi - [4 => foo, 8 => „bar,: an array with only STRING values – [4 => „foo“, 8 => „bar“, …]: an array with only STRING values – [4 => „foo“, 8 => „bar“, …]
  • Đặt hàng []: Một mảng chỉ có „đặt hàng giá trị -Object-[đặt hàng, đặt hàng, trên mạng]][]: an array with only „Order“-Object values – [Order, Order, …][]: an array with only „Order“-Object values – [Order, Order, …]
  • Mảng: Một mảng có int hoặc chuỗi là khóa và „đặt hàng giá trị -Object-[4 => Thứ tự,‘ foo ‘=> Order, Muff]Order>: an array with INT or STRING as key and „Order“-Object values – [4 => Order, ‘foo‘ => Order, …]Order>: an array with INT or STRING as key and „Order“-Object values – [4 => Order, ‘foo‘ => Order, …]
  • Mảng: Một mảng có int hoặc chuỗi là khóa và trộn như các giá trị - [1 => 1, 4 => foo, 6 => \ stdClass, Muff]: an array with INT or STRING as key and mixed as values – [1 => 1, 4 => „foo“, 6 => \stdClass, …]: an array with INT or STRING as key and mixed as values – [1 => 1, 4 => „foo“, 6 => \stdClass, …]
  • Mảng: Một mảng có int là khóa và một mảng (có int là phím và chuỗi là giá trị) là giá trị - [1 => [1 => foo,], 4 => [1 => 4],: an array with INT as key and and an array (with INT as key and string as value) as values – [1 => [1 => „foo“], 4 => [1 => 4], …]: an array with INT as key and and an array (with INT as key and string as value) as values – [1 => [1 => „foo“], 4 => [1 => 4], …]
  • Mảng: Một mảng có int là phím và một mảng (có int là phím và chuỗi là giá trị) là giá trị - [1 => [„foo,„ lall], 4 => [„Öäü ],…]string[]>: an array with INT as key and and an array (with INT as key and string as value) as values – [1 => [„foo“, „lall“], 4 => [„öäü“, „bar“], …]string[]>: an array with INT as key and and an array (with INT as key and string as value) as values – [1 => [„foo“, „lall“], 4 => [„öäü“, „bar“], …]
  • Mảng {đầu ra: Chuỗi, gỡ lỗi: Chuỗi}: Một mảng có khóa „đầu ra và„ Debug: an array with the key „output“ and „debug“, the values are STRING values – [‚output‘ => ‚foo‘, ‚debug‘ => ‚bar‘]: an array with the key „output“ and „debug“, the values are STRING values – [‚output‘ => ‚foo‘, ‚debug‘ => ‚bar‘]
  • Mảng: Một mảng có khóa đầu ra và „Debug, các giá trị là các giá trị chuỗi - [1 => [‚ đầu ra '=> foo', ‚Debug '=> Bar'], 3 => [ đầu ra '=> foo', ‚Debug '=> Bar'], Mạnh]: an array with the key „output“ and „debug“, the values are STRING values – [1 => [‚output‘ => ‚foo‘, ‚debug‘ => ‚bar‘], 3 => [‚output‘ => ‚foo‘, ‚debug‘ => ‚bar‘], …]: an array with the key „output“ and „debug“, the values are STRING values – [1 => [‚output‘ => ‚foo‘, ‚debug‘ => ‚bar‘], 3 => [‚output‘ => ‚foo‘, ‚debug‘ => ‚bar‘], …]

Ví dụ (chỉ @Thi thiên-*): Được hỗ trợ bởi Phpstan & Thi thiên

  • Liệt kê: Một mảng có khóa đầu ra và „Debug, các giá trị là các giá trị chuỗi - [0 => [‚ đầu ra '=> foo', ‚Debug '=> Bar'], 1 => [ đầu ra '=> foo', ‚Debug '=> Bar'], Mạnh]: an array with the key „output“ and „debug“, the values are STRING values – [0 => [‚output‘ => ‚foo‘, ‚debug‘ => ‚bar‘], 1 => [‚output‘ => ‚foo‘, ‚debug‘ => ‚bar‘], …]: an array with the key „output“ and „debug“, the values are STRING values – [0 => [‚output‘ => ‚foo‘, ‚debug‘ => ‚bar‘], 1 => [‚output‘ => ‚foo‘, ‚debug‘ => ‚bar‘], …]

Live-Examples:

- Thi thiên: https://psalm.dev/r/922D4BA5B1Psalm: https://psalm.dev/r/922d4ba5b1Psalm: https://psalm.dev/r/922d4ba5b1

-PHPStan: https://phpstan.org/r/ce657ef4-9f18-46a1-b21a-e51e3a0e6d2dPHPStan: https://phpstan.org/r/ce657ef4-9f18-46a1-b21a-e51e3a0e6d2d

Code:

class orderCollection implements ArrayIterator
2

Hỗ trợ PHPSTOR? Ví dụ, Phpstorm sẽ chấp nhận „mảng „@Param đặt hàng [] $ đặt hàng và„@psalm-param mảng $ đặt hàng. Sadly PhpStorm did not have good support for these types, so that you often have to add „@psalm-*“ PHPDoc comments. For example PhpStorm will accept „array“ but PhpStorm will not understand the PHPDoc, so that you need to add e.g. „@param Order[] $order“ and „@psalm-param array $order“. Sadly PhpStorm did not have good support for these types, so that you often have to add „@psalm-*“ PHPDoc comments. For example PhpStorm will accept „array“ but PhpStorm will not understand the PHPDoc, so that you need to add e.g. „@param Order[] $order“ and „@psalm-param array $order“.

1.3 tự động hoàn thành động & nbsp; (+ dữ liệu từ cơ sở dữ liệu của bạn) thông qua sự hoàn thành sâu thẳm

Nếu bạn có một phương thức, ví dụ: Formatrow ($ Row) Bạn có thể sử dụng „getFieldArray () [0] (Dữ liệu từ cơ sở dữ liệu - bạn phải kết nối IDE với cơ sở dữ liệu của bạn và các truy vấn của bạn cần phải phân tích bằng PhpStorm (hãy xem ảnh chụp màn hình tiếp theo ) và kết hợp dữ liệu tĩnh từ „getheaderfieldArray (), để bạn có tự động hoàn thành từ các nguồn khác nhau.

Code:

class orderCollection implements ArrayIterator
5

Thêm thông tin + Ví dụ: https://github.com/klesun/deep-assoc-completion

1.4 Kiểm tra tính bất biến thông qua các phân tích mã tĩnh (thông qua Thi thiên)

Và thậm chí còn có nhiều hơn. :) Bạn có thể thêm chú thích PHPDOC sẽ kiểm tra xem bạn có thực sự sử dụng các lớp bất biến hoặc ít nhất là các phương pháp. Vui lòng đọc thêm tại đây: https://psalm.dev/articles/immutability-and-beyond

Code:

class orderCollection implements ArrayIterator
6

Live-Example:

- Thi thiên: https://psalm.dev/r/5bac0a9a07

1.5 Generics trong PHP thông qua các phân tích mã tĩnh

Chúng tôi cũng có thể sử dụng thuốc generic thông qua các chú thích mã. Cả Phpstan & Psalm đều hỗ trợ nó, nhưng hỗ trợ của Thi-thiên có tính năng hoàn chỉnh hơn và cả hai công cụ đều có thể sử dụng „@psalm-Hồi-cú pháp. Đây là một số ví dụ đơn giản.

Array_last: sẽ trả về phần tử mảng cuối cùng từ mảng $ (loại: tlast) hoặc $ fallback (loại: tlastfallback). Chúng tôi nói với chức năng rằng các loại xuất phát từ các tham số đầu vào và đầu vào là một mảng của tlast hoặc tlastfallback từ dự phòng.: Will return the last array element from the $array (type: TLast) or the $fallback (type: TLastFallback). We tell the function that the types comes from the input parameters and that the input is an array of TLast or TLastFallback from the fallback.: Will return the last array element from the $array (type: TLast) or the $fallback (type: TLastFallback). We tell the function that the types comes from the input parameters and that the input is an array of TLast or TLastFallback from the fallback.

/**
 * @return array{id: int, name: string, object: \Of\Some\Class}
 */
function getArray(): array {...}
0

Array_First: sẽ trả về phần tử mảng đầu tiên từ mảng $ (loại: tfirst) hoặc $ fallback (loại: tfirstfallback). Chúng tôi nói với chức năng rằng các loại xuất phát từ các thông số đầu vào và đầu vào là một mảng của tfirst hoặc tfirstfallback từ dự phòng.: Will return the first array element from the $array (type: TFirst) or the $fallback (type: TFirstFallback). We tell the function that the types comes from the input params and that the input is an array of TFirst or TFirstFallback from the fallback.: Will return the first array element from the $array (type: TFirst) or the $fallback (type: TFirstFallback). We tell the function that the types comes from the input params and that the input is an array of TFirst or TFirstFallback from the fallback.

/**
 * @return array{id: int, name: string, object: \Of\Some\Class}
 */
function getArray(): array {...}
1

Vì vậy, chúng tôi có thể xác định „Mẫu và các đối số đầu vào bản đồ trên các loại đó, điều này còn phức tạp hơn nếu bạn sử dụng nó trong bối cảnh lớp và bạn ánh xạ các mẫu trên các thuộc tính của lớp. Nhưng logic sẽ giống nhau.

Dưới đây là một ví dụ phức tạp hơn: https://github.com/voku/arrayy/blob/master/src/collection/collectioninterface.php

Hỗ trợ phpstorm ?: Noop, thật đáng buồn là chúng ta cần hack cái này qua „phpstorm_meta, vì vậy đây là một ví dụ:: Noop, sadly we need to hack this via „PHPSTORM_META“, so here is an example:: Noop, sadly we need to hack this via „PHPSTORM_META“, so here is an example:

  • Ghi đè (\ mảng_filter (0), loại (0)); // Giả sử loại tham số đầu tiên là myClass [] sau đó trả về loại Array_filter sẽ là MyClass []
  • Ghi đè (\ Array_Reduce (0), ElementType (0)); // Giả sử loại tham số đầu tiên là myClass [] sau đó trả về loại mảng_reduce sẽ là myClass

Đọc thêm tại đây:

  • https://blog.jetbrains.com/phpstorm/2019/02/new-phpstorm-meta-php-features/
  • https://gist.github.com/voku/477e5c22a67c2d37ca42150d94e371ea

2.0 Sơ yếu lý lịch

Nó không hoàn hảo, và kiểm tra loại và tự động hoàn thành chỉ với PHPDOC không thực sự là những gì tôi mong đợi cho năm 2020. Nhưng nó hoạt động và tôi hy vọng PHPSTORM sẽ mang lại nhiều hỗ trợ hơn cho các loại chú thích mới trong tương lai.

Nhiều liên kết khác:

  • https://docs.phpdoc.org/latest/guides/types.html
  • https://scrutinizer-ci.com/docs/tools/php/php-analyzer/guides/annotating_code
  • https://github.com/klesun/deep-assoc-completion/blob/master/docs/deep-keys-overview.md
  • https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md#appendix-a-types
  • https://psalm.dev/docs/annotating_code/supported_annotations/

Làm thế nào để bạn tìm thấy các phím mảng?

Hàm Array_Keys () được sử dụng để lấy tất cả các phím hoặc một tập hợp con của các khóa của một mảng.Lưu ý: Nếu tìm kiếm tùy chọn_key_value được chỉ định, thì chỉ có các khóa cho giá trị đó được trả về.Nếu không, tất cả các phím từ mảng được trả về.array_keys() function is used to get all the keys or a subset of the keys of an array. Note: If the optional search_key_value is specified, then only the keys for that value are returned. Otherwise, all the keys from the array are returned.array_keys() function is used to get all the keys or a subset of the keys of an array. Note: If the optional search_key_value is specified, then only the keys for that value are returned. Otherwise, all the keys from the array are returned.

Mảng nào đã đặt tên là Keys?

Các mảng liên kết là các mảng sử dụng các khóa có tên mà bạn gán cho chúng. are arrays that use named keys that you assign to them. are arrays that use named keys that you assign to them.

Các loại mảng khác nhau có sẵn trong PHP là gì?

Trong PHP, có ba loại mảng: mảng được lập chỉ mục - mảng có chỉ mục số.Mảng liên kết - Mảng với các khóa có tên.Mảng đa chiều - Mảng chứa một hoặc nhiều mảng.Indexed arrays - Arrays with a numeric index. Associative arrays - Arrays with named keys. Multidimensional arrays - Arrays containing one or more arrays.Indexed arrays - Arrays with a numeric index. Associative arrays - Arrays with named keys. Multidimensional arrays - Arrays containing one or more arrays.