尝试理解类似于以下内容的代码。
$line = 'This line has a cat ant goat dog monkey rat and ape';
$animals = array( 'cat', 'dog', 'monkey', 'rat' );
$count = 1;
while ($count)
{
$line = str_replace( $animals, '', $line, $count );
}
echo $line;
我似乎无法理解循环的必要性。以下似乎给出了相同的结果。
$line = 'This line has a cat ant goat dog monkey rat and ape';
$animals = array( 'cat', 'dog', 'monkey', 'rat' );
$line = str_replace( $animals, '', $line, $count );
echo $line;
那么,为什么循环...我错过了这里的情节?或者它有一些额外的好处?
答案 0 :(得分:0)
如果在替换单词后,可能会重复生成的字符串。
示例:
$line = 'aaaaaaaaa';
$animals = array( 'aaa');
$count = 1;
while ($count)
{
$line = str_replace( $animals, 'a', $line, $count );
}
echo $count . '<br>' . $line; //result a
$line = 'aaaaaaaaa';
$animals = array( 'aaa');
$line = str_replace( $animals, 'a', $line, $count );
echo $count . '<br>' . $line; //result aaa
答案 1 :(得分:-1)
让我们首先了解str_replace中的$ count变量。
表示替换匹配关键字的次数。
在上述情况下,在第一个循环中,$ count应等于4。
当$ count等于4时,while循环继续。 str_replace行将再次运行。
在第二个循环中,在第二次运行str_replace时,根本不应有替换。 $ count也将变为0,因为根本没有匹配。所有关键字都是第一次更换。
所以在我看来,第二个循环是某种不必要的预防,以防str_replace在第一次运行不正常。否则,第二个循环完全没有意义和无用,因为PHP在这个功能层很少犯这样的错误。