0

基本的に私はこのコードシナリオを持っています:

if($_SESSION['player_1_pawn'][0]['currentHealth'] <=0 && 
   $_SESSION['player_1_pawn'][1]['currentHealth'] <=0 && 
   $_SESSION['player_1_pawn'][2]['currentHealth'] <=0 && 
   $_SESSION['player_1_pawn'][3]['currentHealth'] <=0 && 
   $_SESSION['player_1_pawn'][4]['currentHealth'] <=0) {
    //some code here
}

私が投稿したように1つずつ書き込むのではなく、すべてのインデックスが。
['player_1_pawn'][index]['currentHealth']よりも小さい場合に、すべてのインデックスをチェックまたはループする方法はありますか?0

4

2 に答える 2

3

チェックする必要のあるすべての配列要素をループするforeachコンストラクトを作成するだけです。

$flag = true; // after the foreach, flag will be true if all pawns have <= 0 health
foreach ($_SESSION['player_1_pawn'] as $value)
{
  // for each pawn, check the current health
  if ($value['currentHealth'] > 0)
  {
    $flag = false; // one pawn has a positive current health
    break; // no need to check the rest, according to your code sample!
  }
}

if ($flag === true) // all pawns have 0 or negative health - run code!
{
  // some code here
}
于 2012-07-22T09:09:07.490 に答える
1

もう1つの解決策は、array_reduce()を使用して条件を確認することです。

if (array_reduce($_SESSION['player_1_pawn'], function (&$flag, $player) {
    $flag &= ($player['currentHealth'] <=0);
    return $flag;
}, true));

PS配列$_SESSION['player_1_pawn']が空の場合は注意してください。

于 2012-07-22T09:28:58.940 に答える