【发布时间】:2021-12-07 02:59:53
【问题描述】:
到目前为止我的代码:
$text = 'Herman Archer LIVEs in neW YORK';
$oldWords = explode(' ', $text);
$newWords = array();
$counter = 0;
foreach ($oldWords as $word) {
for($k=0;$k<strlen($word);$k++)
$counter = 0;
if ($word[k] == strtoupper($word[$k]))
$counter=$counter+1;
if($counter>1)
$word = strtolower($word);
if($counter == 1)
$word = ucfirst(strtolower($word));
else $word = strtolower($word);
echo $word."<br>";
}
结果:
赫尔曼
弓箭手
生活
在
新
约克
预期输出:
赫尔曼·阿彻住在纽约
【问题讨论】:
-
注意:您应该添加一些花括号
{和},或者注意缩进。在这里,很容易看出if语句在第二个循环中... -
另外,在
$word[k]中,k是一个未定义的常量,而不是$k。 -
目前,
if-statements 在您的for-loop 之后,不在其中(因为您仍然缺少{ })。这意味着$word[k](已经指出是错字)只会检查每个单词的最后一个字符。当前在您的for-loop 中发生的唯一一件事是您在每次迭代中都设置$counter = 0,仅此而已。我假设这不是本意? -
@Baracuda078 使用正则表达式进行字符串操作太过分了
-
@DarkBee 我上次检查时,正则表达式仅用于字符串操作