Php 将某个字符串从数组的下一个索引移动并附加到上一个索引

Php 将某个字符串从数组的下一个索引移动并附加到上一个索引,php,Php,#Gettingstack $strings=[ '要查看正在进行的DOCX转换,只需“Convert”, '设置输出格式并单击“确定”。' ]; $processedStrings=[ '要查看正在进行的DOCX转换,只需“Convert”, '设置输出格式并单击“确定”。' ]; 如何将$strings转换为$processedStrings 这就是它的工作原理: 如果$strings的下一个索引在字符串开头包含,则将被移动并附加到$strings的上一个索引中。因此,您会注意到$proc

#Gettingstack

$strings=[
'要查看正在进行的DOCX转换,只需“Convert”,
'设置输出格式并单击“确定”。'
];
$processedStrings=[
'要查看正在进行的DOCX转换,只需“Convert”,
'设置输出格式并单击“确定”。'
];
如何将
$strings
转换为
$processedStrings

这就是它的工作原理:

如果
$strings
的下一个索引在字符串开头包含
,则
将被移动并附加到
$strings
的上一个索引中。因此,您会注意到
$processedStrings
的下一个索引,字符串开头的
被“修剪”

尝试了这个,但得到了意想不到的结果

$processedStrings=[];
foreach($key=>$string形式的字符串){
$gClosingTag='';
if(strpos($string,$gClosingTag)==0){
$addGClosingTagToPrevString=“{$strings[$key-1]}{$gClosingTag}”;
$processedStrings[]=$addGClosingTagToPrevString;
}否则{
$processedStrings[]=$string;
}
}
var_dump($processedStrings);
输出:

Array
(
    [0] => To see the DOCX conversion in action, simply "<g id="2">Convert".</g>
    [1] => To see the DOCX conversion in action, simply "<g id="2">Convert".</g>
)

数组
(
[0]=>要查看DOCX转换的运行情况,只需“Convert”。
[1] =>要查看DOCX转换的实际情况,只需“转换”。
)

试试这个,它可能比你的代码更简单:

A) 遍历数组$strings

B) 对于每次迭代,使用
&
,通过引用传递迭代的数组元素,这样,如果需要,您可以在迭代时更改其值(即,如果迭代字符串以
开头,则通过
strpos()
(但您应该在此处使用严格相等运算符===而不是==,因为强制执行
false
也会进入循环;如中所述),将迭代字符串的值设置为不包含前4个字符(
)的值

C) 在本例中,就像在代码中一样,将标记添加到上一个元素的末尾

foreach ( $strings as $key => &$string_to_check ) {

  if ( strpos( $string_to_check, '</g>' ) === 0 && $key !== 0) {

    $string_to_check = substr( $string_to_check, 4 );
    $strings[ $key - 1 ] = $strings[ $key - 1 ] . '</g>';

  }

}
foreach($key=>字符串和$string\u to\u检查){
if(strpos($string_to_check,')==0&&$key!==0){
$string_to_check=substr($string_to_check,4);
$strings[$key-1]=$strings[$key-1]。';
}
}

一个好的答案包括对更改内容和原因的解释,以便OP和任何未来的读者可以从中学习。除此之外,这A)将为第一个元素生成一个“未定义索引”通知,b)使用JS连接语法而不是PHP。