2016-12-16 49 views
-1

此代碼有什麼問題。我想讀空格的數量,而不使用任何內置的功能,但它不會返回或閱讀的空格:無法讀取字符串中的空格

$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); 

它總是會爲else,從來沒有進入if聲明。我甚至嘗試過使用isset(),但這也沒有奏效。我在哪裏犯錯誤?

+0

預期產量是多少?它是:'canyoulookintothis?'? – Andreas

+2

你正遇到'$ string [$ i + 1]'的問題。當你點擊最後一個'?'時,它會遇到一個錯誤'未初始化的字符串偏移量'。我很驚訝你沒有看到它。 – aynber

+0

@aynber:他們接受了仍然如此的答案:-0 – AbraCadaver

回答

-1

空間不是空的,它會釘的大小。 所以用這個

$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

或嘗試這個代碼,

使用preg_match_all

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

或使用該::

substr_count($string , ' '); 
+0

_PHP注意:未初始化的字符串偏移量: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