2 for循环嵌套并在一个内部基于外部选择

时间:2021-04-08 21:01:35

I have these arrays:

我有这些数组:

$payments = array(1=>'Cash',2=>Cheque,3=>credit,4=>other);
$selected = array(2,1);

foreach($payments as $key=>$value) {
   foreach($selected as $id) {
      if ($key == $id) {
         echo $id . "is selected" . '<br>';
      }
      else{
          echo $id . " is not selected" . '<br>';
      }
   }
}

 what expected:
 1 is selected
 2 is not selected
 3 is not selected
 4 is selected

 but i got:
 1 is not selected
 1 is selected
 2 is selected
 2 is not selected
 3 is not selected
 3 is not selected
 4 is not selected
 4 is not selected

what's the wrong in my loops?

我的循环中有什么问题?

4 个解决方案

#1


1  

You could simply use in_array() to check if an element is selected:

您可以简单地使用in_array()来检查是否选择了一个元素:

$payments = array(1=>'Cash',2=>'Cheque',3=>'credit',4=>'other');
$selected = array(2,1);

foreach($payments as $key=>$value) {
   if (in_array($key, $selected)) {
      echo $value . "is selected" . '<br>';
   } else {
      echo $value . " is not selected" . '<br>';
   }
}

By the way, you need quotes around the payment method names.

顺便说一句,您需要围绕付款方式名称的报价。

#2


5  

You don't need inner loop:

你不需要内循环:

$payments = array(1=>'Cash',2=>Cheque,3=>credit,4=>other);
$selected = array(2,1);

foreach($payments as $key=>$value) {
  if (in_array($key, $selected)( {
     echo $key . "is selected" . '<br>';
  } else {
      echo $key . " is not selected" . '<br>';
  }
}

#3


1  

You can use in_array() instead, so you can omit your inner loop:

你可以改用in_array(),这样就可以省略你的内循环:

foreach($payments as $key=>$value) {  
  if (in_array($key, $selected)) {
     echo $id . "is selected" . '<br>';
  }else{
      echo $id . " is not selected" . '<br>';
  }
}  

Example

#4


0  

UPDATE: an alternative solution. Not better (maybe), but different :)

更新:替代解决方案。不是更好(也许),但不同:)

$payments = array(1=>'Cash', 2=>'Cheque', 3=>'Credit', 4=>'Other');
$selected = array('Cash','Cheque');

foreach($selected as $chosen){  
    $selected_values = array_search($chosen, $payments);
    echo "Number ". $selected_values." (".$chosen.") is selected.<br>";
} 

You can see the output here

你可以在这里看到输出


Old solution (as everyone else...)

旧解决方案(和其他人一样......)

    $payments = array(1=>'Cash', 2=>'Cheque',3=>'Credit',4=>'Other');

    $selected = array(2,1);

    foreach($payments as $key=>$value) {  
      if (in_array($key, $selected)) {
         echo $key. " is selected" . '<br>';
      }else{
          echo $key. " is not selected" . '<br>';
      }
    } 

#1


1  

You could simply use in_array() to check if an element is selected:

您可以简单地使用in_array()来检查是否选择了一个元素:

$payments = array(1=>'Cash',2=>'Cheque',3=>'credit',4=>'other');
$selected = array(2,1);

foreach($payments as $key=>$value) {
   if (in_array($key, $selected)) {
      echo $value . "is selected" . '<br>';
   } else {
      echo $value . " is not selected" . '<br>';
   }
}

By the way, you need quotes around the payment method names.

顺便说一句,您需要围绕付款方式名称的报价。

#2


5  

You don't need inner loop:

你不需要内循环:

$payments = array(1=>'Cash',2=>Cheque,3=>credit,4=>other);
$selected = array(2,1);

foreach($payments as $key=>$value) {
  if (in_array($key, $selected)( {
     echo $key . "is selected" . '<br>';
  } else {
      echo $key . " is not selected" . '<br>';
  }
}

#3


1  

You can use in_array() instead, so you can omit your inner loop:

你可以改用in_array(),这样就可以省略你的内循环:

foreach($payments as $key=>$value) {  
  if (in_array($key, $selected)) {
     echo $id . "is selected" . '<br>';
  }else{
      echo $id . " is not selected" . '<br>';
  }
}  

Example

#4


0  

UPDATE: an alternative solution. Not better (maybe), but different :)

更新:替代解决方案。不是更好(也许),但不同:)

$payments = array(1=>'Cash', 2=>'Cheque', 3=>'Credit', 4=>'Other');
$selected = array('Cash','Cheque');

foreach($selected as $chosen){  
    $selected_values = array_search($chosen, $payments);
    echo "Number ". $selected_values." (".$chosen.") is selected.<br>";
} 

You can see the output here

你可以在这里看到输出


Old solution (as everyone else...)

旧解决方案(和其他人一样......)

    $payments = array(1=>'Cash', 2=>'Cheque',3=>'Credit',4=>'Other');

    $selected = array(2,1);

    foreach($payments as $key=>$value) {  
      if (in_array($key, $selected)) {
         echo $key. " is selected" . '<br>';
      }else{
          echo $key. " is not selected" . '<br>';
      }
    }