2014-09-23 45 views
1

我有以下陣列返回鍵

[true, false, false, true, true, false, false, true, true, true, false, false] 

我知道如何讓中點,並請使用ceil()floor()得到最接近的整數價值,以及如何是否值之前和之後檢查這個中點與我的中點具有相同的值。

我的問題是,我需要三個true值彼此相鄰,爲我的條件返回true。在此示例中,使用中點和與其相鄰的值將返回false。中點是我最喜歡的位置,因爲如果我的病情返回true,我需要在那裏做點什麼。當這然而返回false,我需要得到其他位置有三個true值彼此相鄰。我需要獲得鑰匙,因爲我需要鑰匙來確定中點,因爲我需要在那裏插入一個值。

從我的例子

所以,我需要返回鍵數字7,8和9,這些鍵

任何建議的不是值來實現這一目標?

+0

你可以給其他的例子 – 2014-09-23 06:35:47

+0

含義是什麼,我需要清理什麼? :-) – 2014-09-23 06:47:06

回答

1

我不知道你是否想要這個。反正PLZ嘗試下面的代碼

$a = array(true, false, false, true, true, false, false, true, true, true, false, false); 
for ($i=0;$i<(sizeof($a)-1);$i++) 
{ 
    if($i!=0&&$i!=(sizeof($a)-1)) 
    { 
     if($a[$i-1]==$a[$i]) 
     { 
      if($a[$i]==$a[$i+1]) 
      { 
       echo ($i-1).','.$i.','.($i+1).'<br>'; 
      } 
     } 

    } 
} 
+0

我現在無法測試它。今天下午會很快測試。還必須測試其他答案:-)。會讓你保持最新狀態。謝謝 – 2014-09-23 10:39:21

1

數組轉換爲包含「1」和「0」,然後搜索「111」的字符串:

$a = [true, false, false, true, true, false, false, true, true, true, false, false]; 

$b = array_map(function ($item) { 
    return $item ? 1 : 0; 
}, $a); 

$joined = implode('', $b); 
if (($pos = strpos($joined, '111')) !== false) { 
    printf("Your positions are %d, %d and %d\n", $pos, $pos +1, $pos + 2); 
} else { 
    printf("Did not found 3 consecutive 'true'"); 
} 
+0

我其實並沒有這樣想。今天下午考試。爲你的想法+1 – 2014-09-23 06:51:43