【发布时间】:2015-07-08 20:25:39
【问题描述】:
我在 PHP 中循环一个字符串数组。具体来说,我在每个数组行(..)中寻找双点。如果没有找到点,则将整行附加到第二个数组行。如果找到,那么我将行拆分,将左半部分放在当前(第二个)数组行中,将右半部分放在 next 行中。
这是我目前所拥有的:
$fudgedindex = 0;
$parsedrows = array('');
foreach($refinedlist as $rowtoparse)
{
$pos2 = strpos($rowtoparse, "..");
//echo $refinedlist[$index] . "<br>";
if ($pos2 === false)
{
$parsedrows[$fudgedindex] = $parsedrows[$fudgedindex] . $rowtoparse;
}
else
{
$length = strlen($rowtoparse);
$partialleft = substr($rowtoparse, 0, $pos2);
$partialright = substr($rowtoparse, $pos2);
$parsedrows[$fudgedindex] = $parsedrows[$fudgedindex] . $partialleft;
$fudgedindex = $fudgedindex + 1;
$parsedrows = '';
$parsedrows[$fudgedindex] = $parsedrows[$fudgedindex] . $partialright;
}
}
在增加 $fudgedindex 后,我不断得到未定义的索引。
自从我使用 PHP 以来已经有一段时间了,我觉得我要么想多了,有点过于程序化,要么犯了一个令人头疼的错误。
任何帮助表示赞赏!再次感谢您抽出宝贵时间提供帮助。 =)
编辑:根据 cmets,这就是我的目标......
$refinedlist[0]="Today I bought milk..Then I went to the "
[1]="store and bought even more food "
[2]="such as apples..I was happy..Then"
[3]=" I went to stackoverflow.com and asked this question "
[4]="to solve my problem.."
结果应该是:
$parsedrows[0]="Today I bought milk"
[1]="Then I went to the store and bought even more food such as apples"
[2]="I was happy."
[3]="Then I went to stackoverflow.com and asked this question to solve my problem"
编辑 2:错误消失了,因此最初的问题已修复。但是,当我运行这个之后:
foreach($parsedrows as $rowtoprint)
{
echo $rowtoprint . "<br>";
}
只显示最后一行。
【问题讨论】:
-
你能举一个
$refinedlist中的3-5个值和$parsedrows的预期结果的例子吗? -
mseifert 已经回答了您的问题。所以有时间问一下你当前问题背后的问题:$refinedlist 的来源是什么?
-
您的问题得到解答了吗?
-
第一个问题,是的(谢谢!)。我为我得到的最终 $parsedrows 错误添加了第二个编辑。
-
查看我的更新答案以解决您的编辑问题。当一行中有两个
..时,需要再进行一次修复。正在努力。