此代码有什么问题。我想在不使用任何内置函数的情况下读取空格的数量,但它不会返回或读取空格:
$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 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:-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);
或尝试此代码,
$matches = " ";
$numSpaces = preg_match_all('/[ ]/', $string , $matches);
或使用此::
substr_count($string , ' ');