Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改字符串';递归地';在PHP中_Php_String_Switch Statement - Fatal编程技术网

更改字符串';递归地';在PHP中

更改字符串';递归地';在PHP中,php,string,switch-statement,Php,String,Switch Statement,我想用几个条件来更改一个字符串(在PHP中),以定义应该进行的更改、更新字符串并不断更改更新的字符串 例如,从一个字符串开始,根据一个条件,对字符进行更改,然后使用第二个版本的字符串,根据另一个条件,再对其进行一些更改,以此类推,这样在流程结束时,更改是累积的 显然,可变范围阻止了以下方法: $newstring = "This is a test string"; $value[] // This is an array already defined. for ($i = 0; $i&l

我想用几个条件来更改一个字符串(在PHP中),以定义应该进行的更改、更新字符串并不断更改更新的字符串

例如,从一个字符串开始,根据一个条件,对字符进行更改,然后使用第二个版本的字符串,根据另一个条件,再对其进行一些更改,以此类推,这样在流程结束时,更改是累积的

显然,可变范围阻止了以下方法:

$newstring = "This is a test string";
$value[] // This is an array already defined.

 for ($i = 0; $i<=count($value); $i++) {
    switch ($value[$i]) {
     case -1:
      $newstring = preg_replace(// do something with $newstring);
      break;
    case 0:
      $newstring = preg_replace ( // do something else with $newstring);
      break;
    case 1:
      $newstring = substr_replace(//do something else with $newstring);
      break;
    }
 }

通过每次替换text1上的文本,您将覆盖对新闻字符串的更改。您需要通过在任何地方使用newstring来保留这些更改

$text1 = $_POST['text1'];
$value = $_POST['array'];
$newstring = $text1;
for ($i = 0; $i<=count($value); $i++) {
 switch ($value[$i][0]) {


    case -1:
       $newstring = preg_replace("/".$value[$i][1]."/","",$newstring,1);
        break;
    case 0:
        break;
    case 1:
        $newstring = substr_replace($newstring, $value[$i][1],$value[$i][2],0);
        break;
    }

}
$text1=$\u POST['text1'];
$value=$_POST['array'];
$newstring=$text1;

对于($i=0;$i您得到了什么错误?您如何知道它与变量作用域有关?我想您的意思是//使用$newstring做点什么..我不认为这是变量作用域的问题..@Jeremiah:嗯,我没有得到错误。我得到了switch语句所做的最后一次更改,这只是一次更改,而不是应用于字符串的几次更改。@amitchd:对。最后一分钟的更改。我会更正它。@Robert:就像@amitchd说的,你确定你在每次替换中都使用
$newstring
而不是
$string
作为输入吗?很好。很有效。只有一个小错误“第9行中的未定义偏移”(切换行)。哦,出现这个错误是因为$I
$text1 = $_POST['text1'];
$value = $_POST['array'];
$newstring = $text1;
for ($i = 0; $i<=count($value); $i++) {
 switch ($value[$i][0]) {


    case -1:
       $newstring = preg_replace("/".$value[$i][1]."/","",$newstring,1);
        break;
    case 0:
        break;
    case 1:
        $newstring = substr_replace($newstring, $value[$i][1],$value[$i][2],0);
        break;
    }

}