Tôi có hai vòng lặp foreach. Trong danh sách menu Foreach Loop đầu tiên và vòng lặp Foreach thứ hai là Loop cơ sở dữ liệu. Vì vậy, tôi muốn so sánh đầu tiên là phím foreach với giá trị foreach thứ hai kết quả mảng foreach đầu tiên được hiển thị
Array ( [master/city] => City [master/national_holiday] => National Holiday [master/operator_comments] => Operator Comments [master/sensors] => Sensors )và kết quả mảng foreach thứ hai
Array ( [0] => Array ( [menu_url] => monitoring/tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [1] => Array ( [menu_url] => monitoring/serach_tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [2] => Array ( [menu_url] => master/national_holiday [menu_category] => monitoring [read] => 1 [write] => 0 ) )Tôi cố gắng sử dụng mã này nhưng không hoạt động tốt
foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } }Bạn có thể đề xuất sai lầm của tôi là gì.
Mã thực của tôi sử dụng trong chế độ xem
<?php $i = 1; foreach($first_array as $k => $val) { ?> <tr> <td>{{ $i }}</td> <td class="mailbox-name">{{ $val }}</td> <?php foreach ($edit_rights['role_rights'] as $rights) { ?> <td><input type="checkbox" class="master_read" name="menu_master_read[]" <?php if ($rights['menu_url'] == $k) { echo 'checked'; } else {echo ''; }?> value="{{ $k }}"></td> <td><input type="checkbox" class="master_write" name="menu_master_write[]" value="{{ $k }}"></td> </tr> <?php } $i++; } ?> </tr>(Php 4, Php 5, Php 7, Php 8)
Cấu trúc foreach cung cấp một cách dễ dàng để lặp lại các mảng. foreach chỉ hoạt động trên các mảng và đối tượng và sẽ đưa ra lỗi khi bạn cố gắng sử dụng nó trên một biến với một loại dữ liệu khác hoặc một biến không chính xác. Có hai cú pháp:
foreach (iterable_expression as $value) statement foreach (iterable_expression as $key => $value) statement
Hình thức đầu tiên đi qua các điều đó được đưa ra bởi iterable_expression. Trên mỗi lần lặp, giá trị của phần tử hiện tại được gán cho $value.
Biểu mẫu thứ hai sẽ chỉ định khóa của phần tử hiện tại cho biến Array ( [0] => Array ( [menu_url] => monitoring/tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [1] => Array ( [menu_url] => monitoring/serach_tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [2] => Array ( [menu_url] => master/national_holiday [menu_category] => monitoring [read] => 1 [write] => 0 ) ) 0 trên mỗi lần lặp.
Lưu ý rằng foreach không sửa đổi con trỏ mảng bên trong, được sử dụng bởi các hàm như dòng () và key ().current() and key().
Có thể tùy chỉnh lặp đối tượng.
Để có thể sửa đổi trực tiếp các phần tử mảng trong vòng lặp đi trước $value với &. Trong trường hợp đó, giá trị sẽ được gán bằng tham chiếu.
Array ( [0] => Array ( [menu_url] => monitoring/tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [1] => Array ( [menu_url] => monitoring/serach_tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [2] => Array ( [menu_url] => master/national_holiday [menu_category] => monitoring [read] => 1 [write] => 0 ) ) 3
Cảnh báo
Tham chiếu của $value và phần tử mảng cuối cùng vẫn còn ngay cả sau vòng lặp foreach. Nó được khuyến nghị phá hủy nó bằng cách unset (). Nếu không, bạn sẽ trải nghiệm hành vi sau:unset(). Otherwise you will experience the following behavior:
Array ( [0] => Array ( [menu_url] => monitoring/tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [1] => Array ( [menu_url] => monitoring/serach_tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [2] => Array ( [menu_url] => master/national_holiday [menu_category] => monitoring [read] => 1 [write] => 0 ) ) 6
Array ( [0] => Array ( [menu_url] => monitoring/tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [1] => Array ( [menu_url] => monitoring/serach_tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [2] => Array ( [menu_url] => master/national_holiday [menu_category] => monitoring [read] => 1 [write] => 0 ) ) 7
Array ( [0] => Array ( [menu_url] => monitoring/tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [1] => Array ( [menu_url] => monitoring/serach_tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [2] => Array ( [menu_url] => master/national_holiday [menu_category] => monitoring [read] => 1 [write] => 0 ) ) 8Có thể lặp lại giá trị của mảng không đổi bằng cách tham khảo:
Array ( [0] => Array ( [menu_url] => monitoring/tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [1] => Array ( [menu_url] => monitoring/serach_tickets [menu_category] => monitoring [read] => 1 [write] => 1 ) [2] => Array ( [menu_url] => master/national_holiday [menu_category] => monitoring [read] => 1 [write] => 0 ) ) 9
Ghi chú::
foreach không hỗ trợ khả năng triệt tiêu các thông báo lỗi bằng cách sử dụng foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } } 1.
Một số ví dụ khác để chứng minh việc sử dụng:
foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } } 2
foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } } 3
foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } } 4Giải nén các mảng lồng nhau có danh sách ()
(Php 5> = 5.5.0, Php 7, Php 8)
Có thể lặp lại một mảng mảng và giải nén mảng lồng vào các biến vòng lặp bằng cách cung cấp một danh sách () làm giá trị.list() as the value.
Ví dụ:
foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } } 5
foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } } 3
foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } } 7Ví dụ trên sẽ xuất ra:
Bạn có thể cung cấp ít phần tử hơn trong danh sách () so với trong mảng lồng nhau, trong trường hợp đó, các giá trị mảng còn sót lại sẽ bị bỏ qua:list() than there are in the nested array, in which case the leftover array values will be ignored:
foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } } 5
foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } } 3
<?php $i = 1; foreach($first_array as $k => $val) { ?> <tr> <td>{{ $i }}</td> <td class="mailbox-name">{{ $val }}</td> <?php foreach ($edit_rights['role_rights'] as $rights) { ?> <td><input type="checkbox" class="master_read" name="menu_master_read[]" <?php if ($rights['menu_url'] == $k) { echo 'checked'; } else {echo ''; }?> value="{{ $k }}"></td> <td><input type="checkbox" class="master_write" name="menu_master_write[]" value="{{ $k }}"></td> </tr> <?php } $i++; } ?> </tr> 0Ví dụ trên sẽ xuất ra:
Bạn có thể cung cấp ít phần tử hơn trong danh sách () so với trong mảng lồng nhau, trong trường hợp đó, các giá trị mảng còn sót lại sẽ bị bỏ qua:list():
foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } } 5
foreach( $first_array as $key => $value) { foreach( $second_array as $second ) { if ($second['value'] == $key) { echo "Hi"; } } } 3
<?php $i = 1; foreach($first_array as $k => $val) { ?> <tr> <td>{{ $i }}</td> <td class="mailbox-name">{{ $val }}</td> <?php foreach ($edit_rights['role_rights'] as $rights) { ?> <td><input type="checkbox" class="master_read" name="menu_master_read[]" <?php if ($rights['menu_url'] == $k) { echo 'checked'; } else {echo ''; }?> value="{{ $k }}"></td> <td><input type="checkbox" class="master_write" name="menu_master_write[]" value="{{ $k }}"></td> </tr> <?php } $i++; } ?> </tr> 3Ví dụ trên sẽ xuất ra:
Notice: Undefined offset: 2 in example.php on line 7 A: 1; B: 2; C: Notice: Undefined offset: 2 in example.php on line 7 A: 3; B: 4; C:
Bạn có thể cung cấp ít phần tử hơn trong danh sách () so với trong mảng lồng nhau, trong trường hợp đó, các giá trị mảng còn sót lại sẽ bị bỏ qua: ¶
Một thông báo sẽ được tạo nếu không có đủ các phần tử mảng để điền vào danh sách ():
<?php $i = 1; foreach($first_array as $k => $val) { ?> <tr> <td>{{ $i }}</td> <td class="mailbox-name">{{ $val }}</td> <?php foreach ($edit_rights['role_rights'] as $rights) { ?> <td><input type="checkbox" class="master_read" name="menu_master_read[]" <?php if ($rights['menu_url'] == $k) { echo 'checked'; } else {echo ''; }?> value="{{ $k }}"></td> <td><input type="checkbox" class="master_write" name="menu_master_write[]" value="{{ $k }}"></td> </tr> <?php } $i++; } ?> </tr> 4
<?php $i = 1; foreach($first_array as $k => $val) { ?> <tr> <td>{{ $i }}</td> <td class="mailbox-name">{{ $val }}</td> <?php foreach ($edit_rights['role_rights'] as $rights) { ?> <td><input type="checkbox" class="master_read" name="menu_master_read[]" <?php if ($rights['menu_url'] == $k) { echo 'checked'; } else {echo ''; }?> value="{{ $k }}"></td> <td><input type="checkbox" class="master_write" name="menu_master_write[]" value="{{ $k }}"></td> </tr> <?php } $i++; } ?> </tr> 5
<?php $i = 1; foreach($first_array as $k => $val) { ?> <tr> <td>{{ $i }}</td> <td class="mailbox-name">{{ $val }}</td> <?php foreach ($edit_rights['role_rights'] as $rights) { ?> <td><input type="checkbox" class="master_read" name="menu_master_read[]" <?php if ($rights['menu_url'] == $k) { echo 'checked'; } else {echo ''; }?> value="{{ $k }}"></td> <td><input type="checkbox" class="master_write" name="menu_master_write[]" value="{{ $k }}"></td> </tr> <?php } $i++; } ?> </tr> 6
<?php $i = 1; foreach($first_array as $k => $val) { ?> <tr> <td>{{ $i }}</td> <td class="mailbox-name">{{ $val }}</td> <?php foreach ($edit_rights['role_rights'] as $rights) { ?> <td><input type="checkbox" class="master_read" name="menu_master_read[]" <?php if ($rights['menu_url'] == $k) { echo 'checked'; } else {echo ''; }?> value="{{ $k }}"></td> <td><input type="checkbox" class="master_write" name="menu_master_write[]" value="{{ $k }}"></td> </tr> <?php } $i++; } ?> </tr> 7
<?php $i = 1; foreach($first_array as $k => $val) { ?> <tr> <td>{{ $i }}</td> <td class="mailbox-name">{{ $val }}</td> <?php foreach ($edit_rights['role_rights'] as $rights) { ?> <td><input type="checkbox" class="master_read" name="menu_master_read[]" <?php if ($rights['menu_url'] == $k) { echo 'checked'; } else {echo ''; }?> value="{{ $k }}"></td> <td><input type="checkbox" class="master_write" name="menu_master_write[]" value="{{ $k }}"></td> </tr> <?php } $i++; } ?> </tr> 8Sanusi Hassan ¶ ¶
29 ngày trước
<?php $i = 1; foreach($first_array as $k => $val) { ?> <tr> <td>{{ $i }}</td> <td class="mailbox-name">{{ $val }}</td> <?php foreach ($edit_rights['role_rights'] as $rights) { ?> <td><input type="checkbox" class="master_read" name="menu_master_read[]" <?php if ($rights['menu_url'] == $k) { echo 'checked'; } else {echo ''; }?> value="{{ $k }}"></td> <td><input type="checkbox" class="master_write" name="menu_master_write[]" value="{{ $k }}"></td> </tr> <?php } $i++; } ?> </tr> 9
foreach (iterable_expression as $value) statement foreach (iterable_expression as $key => $value) statement 0
foreach (iterable_expression as $value) statement foreach (iterable_expression as $key => $value) statement 1
foreach (iterable_expression as $value) statement foreach (iterable_expression as $key => $value) statement 2Okafor Chiagozie ¶ ¶
25 ngày trước
foreach (iterable_expression as $value) statement foreach (iterable_expression as $key => $value) statement 3
foreach (iterable_expression as $value) statement foreach (iterable_expression as $key => $value) statement 4
foreach (iterable_expression as $value) statement foreach (iterable_expression as $key => $value) statement 2