2016-12-16 44 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