如何找到满足if语句的方法

时间:2013-10-15 03:41:39

标签: php if-statement

我有以下if语句

if ( $missCh[0]['type']==4 OR $missCh[1]['type'] == 4 OR $missCh[2]['type'] == 4 ) {
    echo 'go ahead';
}

我想知道$missCh[0][1][2]是否符合声明,以便我可以问if($missCh[X]['value]==3)但我不知道哪部分数组的成立是正确的。

3 个答案:

答案 0 :(得分:0)

$types = array( $missCh[0]['type'], $missCh[1]['type'], $missCh[2]['type'] );

foreach ( $types as $key => $val ) {
   if ( $val == 4 ) $fours[] = $key;
}

foreach ( $types as $key => $val ) {
   if ( in_array( $key, $fours ) ) continue;
   if ( $val == 3 ) $threes[] = $key;
}

print_r( $fours );
print_r( $threes );

答案 1 :(得分:0)

  

我想知道$ missCh [0]或[1]或[2]是否符合声明

如果你现在拥有它,你将无法在脚本中管理这个,因为如果任何条件返回TRUE,你当前允许回应被操作。

如果您想根据特定数组值的具体内容采取行动,则需要根据需要单独检查每个数据并采取相应措施:

if($missCh[0]['type']==4)
  {
    //Do something
  }
elseif ($missCh[1]['type']==4)
  {
    //Do something
  }
elseif($missCh[2]['type']==4)
  {
    //Do something
  }

如果合适的话,你的最后一个elseif可能只是其他的,如果以前的检查都没有返回TRUE,那么这将是一个全部捕获。

答案 2 :(得分:0)

我已经隔离了在函数中检查if的责任。该函数回应“继续”并返回索引$ miss [$ i] ['type']等于4。

<?php

  $miss[0]['type'] = 2;
  $miss[1]['type'] = 4;
  $miss[2]['type'] = 5;

function goAhead($miss) {
  for($i=0;$i<=count($miss);$i++) {
    if($miss[$i]['type']==4) {
      echo 'go ahead';
      return $i;
    }
  }
}

$i = goAhead($miss);

echo $i;

此解决方案适用于一个或无限索引或$ miss数组。这意味着如果$ miss数组将增长,您将永远不需要重构此代码。