2016-12-16 8 views
-1

このコードで何が問題なのですか。私は、関数内で構築されたいずれかを使用することなく、空白の数を読みたいが、それは返すか、空白を読んで文句を言わない:それは常にelse一部になるだろう文字列の空白を読み取れません

$string = "can you look into this??"; 
$i = 0; 
$breakPoints = 0; 

while ($string[$i] != '' & $string[$i + 1] != '') { 
    if ($string[$i] == "" || empty($string[$i])) { 
     die("cdsd"); 
     $breakposition = $string[$i]; 
     $breakPoints++; 
    } else { 
     print_r($string[$i]); 
    } 
    $i++; 
} 

echo($breakPoints); 

と決してif声明に入りません。私もisset()を使ってみましたが、それもうまくいきませんでした。私はどこでミスをしていますか?

+0

期待される出力は?それは?「canyoulookintothis?」ですか? – Andreas

+2

あなたは '$ string [$ i + 1]'の問題を抱えています。最後の '?'を押すと、 'Uninitialized string offset'というエラーが発生します。私はあなたがそれを見ていないのに驚いています。 – aynber

+0

@aynber:そして、彼らはまだそれを受け入れる答えを受け入れました:-0 – AbraCadaver

答えて

-1

スペースが空いていないん、それはサイズをタックします。 ので、

使用preg_match_allこの

$string = "can you look into this??"; 
$i = 0; 
$breakPoints = 0; 

while ($string[$i] != '' & $string[$i + 1] != '') { 

    if ($string[$i] == " ") { 
     echo " "; 
     $breakposition = $string[$i]; 
     $breakPoints++; 
    } else { 
     print_r($string[$i]); 
    }  
    $i++; 
} 

echo($breakPoints); 

DEMO

を使用するか、このコードを試してみてください。

$matches = " "; 
$numSpaces = preg_match_all('/[ ]/', $string , $matches); 

またはこれを::使用

substr_count($string , ' '); 
+0

_PHP Notice:初期化されていない文字列オフセット:24_ – AbraCadaver

+1

私の部分には間違いがあります。ビルド関数では使用できませんでした。 inbuild関数を使わずに空白を読み込む方がいいですか? –

+0

なぜエラーのある答えを受け入れますか? https://eval.in/699198 – AbraCadaver

3

文字列オフセットがisset()の間にループして、スペースに等しいかどうかを確認してください。 $i+1で何かをする必要はありませ:

$string = "can you look into this??"; 
$i = 0; 
$breakPoints = 0; 

while (isset($string[$i])) { 
    if ($string[$i] == " ") { 
     $breakposition = $string[$i]; 
     $breakPoints++; 
    } else { 
     print_r($string[$i]); 
    } 
    $i++; 
} 
echo($breakPoints); 

この出力:

canyoulookintothis??4 
0

あなたのコードの権利を持ったら、あなたは常に文字列のインデックスエラーに実行され、あなたがチェックする機能が内蔵されISSETを()が必要になります操作を実行する前に つまり、インデックスのiは最終的に文字列の最後の文字を超えています。これはPHPエラーの原因になります。 isset()を使ってそれをチェックし、ループから抜け出すことができます。例:

$string = "can you look into this??"; 
$i = 0; 
$breakPoints = 0; 

while (isset($string[$i])) { 
    if ($string[$i] == " ") { 
     $breakPoints++; 
    } else { 
     if($string[$i] != ''){ 
      print_r($string[$i]); 
     } 
    } 
    $i++; 
} 
echo("<br />Number of spaces: ".$breakPoints 
関連する問題