2016-11-03 8 views
2

このループが機能しない理由はわかりません。whileループ内でcontinue文whileループwhile検索ページ機能

このループの目的は、指定された検索語(この例ではTN)と等しくない配列(この例では0-2)をすべてスキップすることです。だから、出力

TN 

であるべきで、

IN 
TN 
OH 

すべきではないがここに私のコードです:それは常にインクリメントし、楽観的になるよう

<?php 

$states = array('IN', 'TN', 'OH'); 
$search = 'TN'; 

$count = 0; 
while($count <= count($states)){ 
    if($states[$count] != $search){ 
     continue; 
    } 

    echo $states[$count]."<br/>"; 
    $count++; 
} 

?> 

答えて

4

は++、カウントを移動:

while($count < count($states)){ 
    if($states[$count] == $search){ 
    echo $states[$count]."<br/>"; 
    } 
    $count++; 
} 
+0

しかし、状態のエコー処理が0に設定された最初の値をスキップする前にインクリメントを行うとしたら? –

+0

私はarray_searchをお勧めしますか? $ pos = array_search($ search、$ states); echo $ states [$ pos]。 "
"; – WEBjuju

+0

私はwhile($ count

2

使用array_search

値「TN」の配列を検索し、返すそのキー

<?php 

     $states = array('IN', 'TN', 'OH'); 
     $search = 'TN'; 

     $index = array_search($search, $states); 

     if($index && $states[$index]) 
     { 

     echo $states[$index]; 

     } 

    ?> 
+0

if(!array_search($ search 、$ states)){continue;} whileループの中で? –

+0

いいえ、array_searchではループは必要ありません。検索するだけで必要なものに直接アクセスできます。 $ pos = array_search($ search、$ states); echo $ states [$ pos]。 "
"; – WEBjuju

+0

whileループは必要ありません – JYoThI

0

array_searchはあなた

<?php 
$states = array('IN', 'TN', 'OH'); 
$search = 'TN'; 
$searcharr = array_search($search, $states); 
var_dump($searcharr); 
0

ための最善の解決策であるあなたが無限ループに自分自身を立ち往生。 0 < 3は、$場合の状態が[0]!= 'TN' はまだ次の 反復$回数0

第二iterantionに進みながら

第一の繰り返しながら、0 < 3、$場合の状態[0] != 'TNは' ....... .......まだ0

次 反復$回数に続ける.......

、それはあなたが自分で立ち往生永遠に続きます0インデックスに対してチェックしています。

は、あなたは、あなたの試合はというし、カウントをインクリメントした後にブレークを使用してwhileループを終了する必要があります。また、continueを使用する前に、変数$countを増やす必要があります。また、あなたのwhileループ条件が<ではなく<=countために戻って3、およびお使いの$states配列インデックスである必要があり0,1,2

​​

であり、あなたは、配列の要素を見つけるのではなく、再発明しにarray_search & in_arrayを確認することができますホイール。

0

foreachループはwhileループより優れた解決策になると思います。 cointinueまたはbreakポイントは必要なく、配列を繰り返し処理する必要はありません。

この場合のwhileループは役に立たないようです。

すなわち:

foreach ($states as $state) { 
    if ($state == $search) { 
     echo $state."<br />"; 
    } 
} 

出力:

TN

しかし、最善の解決策は、array_search()のまま。

希望します。