Hướng dẫn if else condition in foreach loop in php - nếu điều kiện khác trong vòng lặp foreach trong php

Tôi có một trang PHP mà tôi đang cố gắng đơn giản hóa và gặp phải một số vấn đề mà tôi không thể vượt qua một mình. Biểu mẫu của tôi lấy dữ liệu người dùng, đăng lên chính nó, xác thực rằng các trường đã được điền vào và sau đó hiển thị nội dung/bài đăng biểu mẫu cho cơ sở dữ liệu MySQL.

Vấn đề tôi gặp phải là thay vì có 20 câu lệnh IF ()/otherif, tôi muốn tải tên biến vào một mảng, lặp qua mảng đó và nếu một biến không được điền trong biểu mẫu, nó sẽ tạo ra một thông báo lỗi . Thật không may, mã của tôi sẽ hiển thị thông báo lỗi bất kể trường có giá trị trong đó hay không.

Như một lưu ý bổ sung, tôi có thể thêm $ Shippingco vào biểu mẫu của mình và lặp lại nó nhưng thông báo rằng nó chưa hoàn thành vẫn hiển thị.

Ngoài ra, nếu tập lệnh nhập câu lệnh IF mà tôi muốn nó ngừng thực hiện phần còn lại của trang sau khi đóng tôi đã thử thoát; không thành công.

Đây là những gì tôi có:

 $b) {

if(!$$ENote[$a]){       //I intentionally put the '$$' in this line otherwise none of the messages show. . . with data in the variables or not.

$error = "Error!  Please Add the $Emessg[$a]!";
?>

Sales Order Entry Form

Please press back to properly complete the form

Cảm ơn bạn trước.

hỏi ngày 13 tháng 7 năm 2012 lúc 23:13Jul 13, 2012 at 23:13

Hướng dẫn if else condition in foreach loop in php - nếu điều kiện khác trong vòng lặp foreach trong php

1

Tôi nghi ngờ rằng cú pháp $$ENote[$a] có lẽ đang được hiểu là ($$ENote)[$a] thay vì $($ENote[$a]) (dấu ngoặc đơn không phải là cú pháp pháp lý, chỉ dành cho bản demo).

Vì vậy, tôi đề xuất một biến trung gian, hoặc cú pháp phức tạp khác:

foreach ($ENote as $a => $b) {
  $varname = $ENote[$a];
  if(!$$varname){

hoặc (không được kiểm tra, chỉ là một linh cảm mà nó có thể hoạt động):

foreach ($ENote as $a => $b) {
  if(!${$ENote[$a]}){

Đã trả lời ngày 13 tháng 7 năm 2012 lúc 23:43Jul 13, 2012 at 23:43

Chris Traheychris TraheyChris Trahey

Huy hiệu vàng 18.1k11 gold badge40 silver badges54 bronze badges

0

Có một số vấn đề đang chơi ở đây.

Đầu tiên, mỗi mục $ENote phải bỏ qua ____10 hàng đầu. Các biến biến không được bao gồm phần

foreach ($ENote as $a => $b) {
  $varname = $ENote[$a];
  if(!$$varname){
0.

$ENote[] = 'Terms';
$ENote[] = 'FOB';
...

Thứ hai, như Ctrahey đã nói, bạn cần lưu trữ tên biến vào một biến để mở rộng nó với một ____10 khác.

Dưới đây là một số mẹo làm sạch mã:

  • Kết hợp hai mảng thành một (bản đồ).
  • Gán cho các biến được đặt tên từ
    foreach ($ENote as $a => $b) {
      $varname = $ENote[$a];
      if(!$$varname){
    
    3 trong vòng lặp.
  • Sử dụng
    foreach ($ENote as $a => $b) {
      $varname = $ENote[$a];
      if(!$$varname){
    
    4 để thoát khỏi vòng lặp.

Điều này sẽ loại bỏ phần lớn sự dư thừa.

$ENote = array(
    'Terms' => 'Shipping Terms',
    'FOB' => 'FOB Method',
    ...
);

foreach ($ENote as $field => $title) {
    $value = $$field = $_POST[$field];
    if (!$value) {
        ... display error using $title ...
        break;  // exit loop
    }
}

Đã trả lời ngày 14 tháng 7 năm 2012 lúc 0:13Jul 14, 2012 at 0:13

David Harknessdavid HarknessDavid Harkness

35K10 Huy hiệu vàng111 Huy hiệu bạc129 Huy hiệu đồng10 gold badges111 silver badges129 bronze badges

Tại sao bạn không tạo một mảng hoặc tất cả các trường và chuyển mảng đó vào một hàm, và trong hàm đó, lặp qua từng mục và nếu trống vứt lỗi?

Một cái gì đó như thế này:

function checkEmpty($some_array) {
    foreach($some_array as $key=>$value) {
      if($value=="") {
         or if(empty($key)) {   ///throw error }
         //put error message and exit

       }

    }
  }

rmtheis

6.62211 Huy hiệu vàng58 Huy hiệu bạc75 Huy hiệu đồng11 gold badges58 silver badges75 bronze badges

Đã trả lời ngày 13 tháng 7 năm 2012 lúc 23:45Jul 13, 2012 at 23:45

YeakyeakYeak

2.4308 Huy hiệu vàng41 Huy hiệu bạc70 Huy hiệu Đồng8 gold badges41 silver badges70 bronze badges

Bạn có thể đặt một câu lệnh IF bên trong một vòng lặp foreach?

Đây là quá trình đặt một tuyên bố kiểm soát bên trong một câu lệnh kiểm soát khác để thực hiện một hành động.Bạn có thể đặt một câu lệnh IF bên trong cho các vòng lặp.You can put an if statements inside for loops.

Điều gì được lồng nếu tuyên bố khác trong PHP?

Câu lệnh Nested IF chứa khối IF bên trong khối khác.Câu lệnh IF chỉ thực thi khi điều kiện được chỉ định ở bên ngoài nếu câu lệnh là đúng.contains the if block inside another if block. The inner if statement executes only when specified condition in outer if statement is true.

Làm thế nào foreach hoạt động trong PHP?

ForEach ¶ Mẫu đầu tiên đi qua sự khác biệt được đưa ra bởi ITBER_EXPRESS.Trên mỗi lần lặp, giá trị của phần tử hiện tại được gán cho $ giá trị.Biểu mẫu thứ hai sẽ chỉ định khóa của phần tử hiện tại cho biến khóa $ trên mỗi lần lặp.

Câu nào trong số các câu lệnh Looping được hỗ trợ bởi PHP I cho và foreach II trong khi và làm trong khi III chuyển đổi trường hợp IV nếu và nếu V GOTO Nhãn?

Giải thích: Tất cả đều được hỗ trợ các câu lệnh lặp trong PHP vì chúng có thể lặp lại cùng một khối mã một số lần nhất định hoặc cho đến khi một điều kiện nhất định được đáp ứng.All are supported looping statements in PHP as they can repeat the same block of code a given number of times, or until a certain condition is met.