我是php的新手,我知道我犯了一些愚蠢的错误,但即使结果与预期不同,代码似乎也能正常工作。
我正在尝试将“To step 1”这样的字符串更改为“To step 2”,但我无法提取数字并将其递增。
我已经看到了很多问题并尝试了很多方法,如下面的代码所示。
请告诉我我错在哪里。
编辑:我注意到$ CurStep似乎在else块中没有值
$CurStep='To step 1';
echo $CurStep.'<br>';
if($CurStep=null){
$BtnFwdName='To step 1';
$BtnBackName=null;
$Step=0;
}else{
$Step=substr($CurStep,-1,1);
echo '<br>step substr='.$Step;
$Step=filter_var($CurStep, FILTER_SANITIZE_NUMBER_INT);
echo '<br>step filter='.$Step;
$Step= $CurStep;
preg_replace("/[^0-9]/","",$Step);
echo '<br>step replace='.$Step[0];
$BtnBackName="To step ".$Step-1;
$BtnFwdName="To step ";
$BtnFwdName.=$Step+1;
echo '<br>step final='.$Step;
}
echo '<br>BtnFwdName='.$BtnFwdName;
echo '<br>';
echo 'BtnBackName='.$BtnBackName;
N.B。我还在http://phptester.net/上测试了这段代码以检查它是否是我的电脑故障,但结果是相同的
答案 0 :(得分:1)
<强> 1.更改 强>
if($CurStep=null){ // this is not comparison,it's an assignment
要: -
if($CurStep==null){ // now it's an assignment
2.I 不知道为什么你做了那么多东西。您可以轻松地执行以下操作: -
<?php
$CurStep='To step 1';
// explode string to make it an array
$exploded_array = explode(' ',$CurStep);
// increase the last value of array to 1
$exploded_array[count($exploded_array)-1] = $exploded_array[count($exploded_array)-1]+1;
// again convert array to string and echo it
echo $newcurStep = implode(' ',$exploded_array);
输出: - https://eval.in/875629
注意: - 同样地,你也可以To step 0
(而不是+1 do -1 )。如果你不能让我知道。我也会加上