str_replace使用数组

时间:2014-09-23 12:47:44

标签: php str-replace

尝试理解类似于以下内容的代码。

$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;

那么,为什么循环...我错过了这里的情节?或者它有一些额外的好处?

2 个答案:

答案 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在这个功能层很少犯这样的错误。