0

我有以下 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)

4

3 回答 3

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 可能只是 else,如果之前的检查都没有返回 TRUE,那么这将是一个全面的问题。

于 2013-10-15T03:51:48.633 回答
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 数组会增长,您将永远不需要重构此代码。

于 2013-10-15T03:51:50.893 回答
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 );
于 2013-10-15T03:46:32.820 回答