使用数字减去结果时的未知输出

时间:2017-11-04 03:16:35

标签: php

我试图用数字来结果输出结果未知结果结果示例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;
    }
}  
?>

感谢我的解决方案中的阅读和影响

1 个答案:

答案 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中从字符串到整数盲目地进行类型转换,然后又可以成为陷阱。