Hướng dẫn php dynamic properties - thuộc tính động php
Tổng quanTrong PHP, bạn chỉ có thể đặt thêm Show Nội phân chính
Nội phân chính
Trường hợp 1: $$ foo ['Bar'] ['Baz']]
Mặc dù tôi không giới thiệu nó, bạn thậm chí có thể xâu chuỗi hành vi này:
Bạn có thể nhưng không bị buộc phải đặt
Sử dụng Sự khác biệt giữa PHP5 và PHP7Trường hợp 1: $$ foo ['Bar'] ['Baz']] Trường hợp 2: $ foo-> $ bar ['Baz']] Trường hợp 1: $$ foo ['Bar'] ['Baz']]
Trường hợp 2: $ foo-> $ bar ['Baz']]
Trường hợp 3: $ foo-> $ bar ['Baz'] ()
Trường hợp 4: foo :: $ bar ['Baz'] ()
5.5.3. Thảo luậnTrường hợp 1: $$ foo ['Bar'] ['Baz']] Mặc dù tôi không giới thiệu nó, bạn thậm chí có thể xâu chuỗi hành vi này: $stooges = array('Moe','Larry','Curly'); $stooge_moe = 'Moses Horwitz'; $stooge_larry = 'Louis Feinberg'; $stooge_curly = 'Jerome Horwitz'; foreach ($stooges as $s) { print "$s's real name was ${'stooge_'.strtolower($s)}.\n"; } Moe's real name was Moses Horwitz. Larry's real name was Louis Feinberg. Curly's real name was Jerome Horwitz. Bạn có thể nhưng không bị buộc phải đặt Sử dụng for ($i = 1; $i <= $n; $i++) { $t = "title_$i"; if ($title == $$t) { /* match */ } } Tuy nhiên, bạn nên luôn luôn sử dụng Một lý do khác để luôn luôn sử dụng Trong PHP7, các biến động, thuộc tính và phương pháp hiện sẽ được đánh giá nghiêm ngặt theo thứ tự từ trái sang phải, trái ngược với sự pha trộn của các trường hợp đặc biệt trong PHP5. Các ví dụ dưới đây cho thấy thứ tự đánh giá đã thay đổi như thế nào. Php5 Interpetation: 2echo, print, unset(), isset(), empty(), include, require and the like. Utilize wrapper functions to make use of any of these constructs as variable functions. Php7 Interpetation: 0 1 2Php5 Interpetation: 4Php7 Interpetation: 3 4 5Php5 Interpetation: 6Php7 Interpetation: 6 7 8Php5 Interpetation: 9 Php7 Interpetation: Ví dụ trước in 103. Bởi vì $ animal = 'rùa', động vật $$ là $ rùa, bằng 103. 0 1 2 3 4 5 6 7Sử dụng niềng răng xoăn, bạn có thể xây dựng các biểu thức phức tạp hơn chỉ ra tên biến: ¶ PHP đánh giá biểu thức giữa niềng răng xoăn và sử dụng nó như một tên biến. Biểu thức đó thậm chí có thể có các cuộc gọi chức năng trong đó, chẳng hạn như strtolower (). 8 9 7Các biến biến cũng hữu ích khi lặp qua các biến được đặt tên tương tự. Giả sử bạn đang truy vấn một bảng cơ sở dữ liệu có các trường có tên Title_1, Title_2, v.v. Nếu bạn muốn kiểm tra xem một tiêu đề có phù hợp với bất kỳ giá trị nào không, cách dễ nhất là lặp qua chúng như thế này: ¶ Tất nhiên, sẽ đơn giản hơn khi lưu trữ các giá trị này trong một mảng, nhưng nếu bạn đang duy trì mã cũ sử dụng kỹ thuật này (và bạn không thể thay đổi nó), các biến biến là hữu ích. $stooges = array('Moe','Larry','Curly'); $stooge_moe = 'Moses Horwitz'; $stooge_larry = 'Louis Feinberg'; $stooge_curly = 'Jerome Horwitz'; foreach ($stooges as $s) { print "$s's real name was ${'stooge_'.strtolower($s)}.\n"; } Moe's real name was Moses Horwitz. Larry's real name was Louis Feinberg. Curly's real name was Jerome Horwitz.1 $stooges = array('Moe','Larry','Curly'); $stooge_moe = 'Moses Horwitz'; $stooge_larry = 'Louis Feinberg'; $stooge_curly = 'Jerome Horwitz'; foreach ($stooges as $s) { print "$s's real name was ${'stooge_'.strtolower($s)}.\n"; } Moe's real name was Moses Horwitz. Larry's real name was Louis Feinberg. Curly's real name was Jerome Horwitz.2 $stooges = array('Moe','Larry','Curly'); $stooge_moe = 'Moses Horwitz'; $stooge_larry = 'Louis Feinberg'; $stooge_curly = 'Jerome Horwitz'; foreach ($stooges as $s) { print "$s's real name was ${'stooge_'.strtolower($s)}.\n"; } Moe's real name was Moses Horwitz. Larry's real name was Louis Feinberg. Curly's real name was Jerome Horwitz.3 Cú pháp nẹp xoăn cũng là cần thiết trong việc giải quyết sự mơ hồ về các yếu tố mảng. Biến biến $$ lừa $$ [12] có thể có hai ý nghĩa. Đầu tiên là "Lấy những gì trong phần tử thứ 12 của mảng lừa $ và sử dụng nó như một tên biến." Viết điều này là: $ {$ lừa [12]}. Thứ hai là, "Sử dụng những gì trong những con lừa $ vô hướng như một tên mảng và nhìn vào phần tử thứ 12 của mảng đó." Viết điều này là: $ {$ Donkeys} [12]. ¶ PHP hỗ trợ khái niệm các chức năng biến. Điều này có nghĩa là nếu một tên biến có dấu ngoặc đơn được thêm vào nó, PHP sẽ tìm kiếm một hàm có cùng tên với bất kỳ biến nào đánh giá và sẽ cố gắng thực hiện nó. Trong số những thứ khác, điều này có thể được sử dụng để thực hiện các cuộc gọi lại, bảng chức năng, v.v. $stooges = array('Moe','Larry','Curly'); $stooge_moe = 'Moses Horwitz'; $stooge_larry = 'Louis Feinberg'; $stooge_curly = 'Jerome Horwitz'; foreach ($stooges as $s) { print "$s's real name was ${'stooge_'.strtolower($s)}.\n"; } Moe's real name was Moses Horwitz. Larry's real name was Louis Feinberg. Curly's real name was Jerome Horwitz.4 $stooges = array('Moe','Larry','Curly'); $stooge_moe = 'Moses Horwitz'; $stooge_larry = 'Louis Feinberg'; $stooge_curly = 'Jerome Horwitz'; foreach ($stooges as $s) { print "$s's real name was ${'stooge_'.strtolower($s)}.\n"; } Moe's real name was Moses Horwitz. Larry's real name was Louis Feinberg. Curly's real name was Jerome Horwitz.5 $stooges = array('Moe','Larry','Curly'); $stooge_moe = 'Moses Horwitz'; $stooge_larry = 'Louis Feinberg'; $stooge_curly = 'Jerome Horwitz'; foreach ($stooges as $s) { print "$s's real name was ${'stooge_'.strtolower($s)}.\n"; } Moe's real name was Moses Horwitz. Larry's real name was Louis Feinberg. Curly's real name was Jerome Horwitz.6 Sử dụng niềng răng xoăn, bạn có thể xây dựng các biểu thức phức tạp hơn chỉ ra tên biến: ¶ Tất nhiên, sẽ đơn giản hơn khi lưu trữ các giá trị này trong một mảng, nhưng nếu bạn đang duy trì mã cũ sử dụng kỹ thuật này (và bạn không thể thay đổi nó), các biến biến là hữu ích. $stooges = array('Moe','Larry','Curly'); $stooge_moe = 'Moses Horwitz'; $stooge_larry = 'Louis Feinberg'; $stooge_curly = 'Jerome Horwitz'; foreach ($stooges as $s) { print "$s's real name was ${'stooge_'.strtolower($s)}.\n"; } Moe's real name was Moses Horwitz. Larry's real name was Louis Feinberg. Curly's real name was Jerome Horwitz.7 $stooges = array('Moe','Larry','Curly'); $stooge_moe = 'Moses Horwitz'; $stooge_larry = 'Louis Feinberg'; $stooge_curly = 'Jerome Horwitz'; foreach ($stooges as $s) { print "$s's real name was ${'stooge_'.strtolower($s)}.\n"; } Moe's real name was Moses Horwitz. Larry's real name was Louis Feinberg. Curly's real name was Jerome Horwitz.8 $stooges = array('Moe','Larry','Curly'); $stooge_moe = 'Moses Horwitz'; $stooge_larry = 'Louis Feinberg'; $stooge_curly = 'Jerome Horwitz'; foreach ($stooges as $s) { print "$s's real name was ${'stooge_'.strtolower($s)}.\n"; } Moe's real name was Moses Horwitz. Larry's real name was Louis Feinberg. Curly's real name was Jerome Horwitz.9 for ($i = 1; $i <= $n; $i++) { $t = "title_$i"; if ($title == $$t) { /* match */ } }0 for ($i = 1; $i <= $n; $i++) { $t = "title_$i"; if ($title == $$t) { /* match */ } }1 for ($i = 1; $i <= $n; $i++) { $t = "title_$i"; if ($title == $$t) { /* match */ } }2 for ($i = 1; $i <= $n; $i++) { $t = "title_$i"; if ($title == $$t) { /* match */ } }3 for ($i = 1; $i <= $n; $i++) { $t = "title_$i"; if ($title == $$t) { /* match */ } }4 Cú pháp nẹp xoăn cũng là cần thiết trong việc giải quyết sự mơ hồ về các yếu tố mảng. Biến biến $$ lừa $$ [12] có thể có hai ý nghĩa. Đầu tiên là "Lấy những gì trong phần tử thứ 12 của mảng lừa $ và sử dụng nó như một tên biến." Viết điều này là: $ {$ lừa [12]}. Thứ hai là, "Sử dụng những gì trong những con lừa $ vô hướng như một tên mảng và nhìn vào phần tử thứ 12 của mảng đó." Viết điều này là: $ {$ Donkeys} [12]. ¶ PHP hỗ trợ khái niệm các chức năng biến. Điều này có nghĩa là nếu một tên biến có dấu ngoặc đơn được thêm vào nó, PHP sẽ tìm kiếm một hàm có cùng tên với bất kỳ biến nào đánh giá và sẽ cố gắng thực hiện nó. Trong số những thứ khác, điều này có thể được sử dụng để thực hiện các cuộc gọi lại, bảng chức năng, v.v. for ($i = 1; $i <= $n; $i++) { $t = "title_$i"; if ($title == $$t) { /* match */ } }5 for ($i = 1; $i <= $n; $i++) { $t = "title_$i"; if ($title == $$t) { /* match */ } }6 7 |