我试图用数字来结果输出结果未知结果结果示例555555
而不是5这是我的代码:
<?php
$txt = "12345678910";
$nu = 2;
$u = 8;
$disp = str_split($txt, $nu);
for($i = 0; $i < $u; $i++) {
$count += count($disp[$i]);
if(strlen($disp[$i]) != $nu)
{
$count = substr($count, 0, 1);
$uu = ($count - 1);
$we =substr($uu, 0, 1);
echo $we;
}
}
?>
感谢我的解决方案中的阅读和影响
答案 0 :(得分:0)
这是消除错误的答案,因此它只显示5。
我真的不明白你对这段代码的意图,但是为了摆脱你的错误,你需要重构一些事情。
$u
的值取决于$txt
的长度以及您在str_split中设置的位数。 $ u的值太大,因为数组中不存在索引6和7的条目。
第一次去...
<?php
$txt = "12345678910"; // The string of digits
$nu = 2; // How many digits per array
$disp = str_split($txt, $nu); // The array of strings of $nu digits
$u = count($disp); // Calculate the size of $disp - don't guess
$count = 0; // initialise the variable
for ($i = 0; $i < $u; $i++) {
$count += count($disp[$i]); // count($disp[$i]) will always be 1
// Looking for an entry that isn't $nu digits in size
if (strlen($disp[$i]) != $nu) {
$count = substr($count, 0, 1); // Rip off the 1st digit of the index count
$uu = ($count - 1); // decrement it?
echo $uu; // display it
}
}
另一种方式...... 所以使用foreach会更好,因为它会照顾所有的辛勤工作。
<?php
$txt = "12345678910";
$nu = 2;
$disp = str_split($txt, $nu);
// DEBUG
var_dump($disp);
$count = 0; // Initialise the variable before we can += it
foreach ($disp as $number) {
$count += 1;
if (strlen($number) != $nu) {
// Taking the index count, getting the 1st digit
$count = substr($count, 0, 1);
// Then subtracting 1 from it
$uu = $count - 1;
echo $uu;
}
}
所以这只能解决你所拥有的问题,所以它有点好,没有错误。
在PHP中从字符串到整数盲目地进行类型转换,然后又可以成为陷阱。