PHP用数组中的值替换子字符串

Yun*_*lam 2 php arrays string str-replace

我有一个文字说:

$text = "An Elephant is an Elephant but an Elephant is not an Elephant"
Run Code Online (Sandbox Code Playgroud)

我有一个阵列说:

$array = array("First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eight", "Ninth");
Run Code Online (Sandbox Code Playgroud)

在文中你可以看到有很多出现的"大象".我想要做的是我想用数组中的唯一值替换Elephant的出现,结果应该是这样的:

$result = "An Fifth is an Seventh but an First is not an Fourth"
Run Code Online (Sandbox Code Playgroud)

到目前为止我试过这个:

$arr = array("First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eight", "Ninth");
$text = "an elephant is an elephant but an elephant is not an elephant";
$array = explode(" ", $text);
$new_arr = array_diff($array, array("elephant"));
$text = implode(" ".$arr[array_rand($arr)]." ", $new_arr);
echo $text;
Run Code Online (Sandbox Code Playgroud)

它输出这样的东西:

an First is First an First but First an First is First not First an
Run Code Online (Sandbox Code Playgroud)

我怎么能这样?

An Fifth is an Seventh but an First is not an Fourth
Run Code Online (Sandbox Code Playgroud)

jim*_*age 5

在这,你为什么不尝试这个?

$arr = array("First", "Second", "Third", "Fourth", "Fifth", "Sixth", "Seventh", "Eight", "Ninth");
$arrlength = count($arr);
$text = "an elephant is an elephant but an elephant is not an elephant";
$array = explode(" ", $text);
for ($i=0; $i < count($array); $i++) { 
    if ($array[$i]=="elephant")
    {
        $random_key = array_rand($arr, $arrlength);
        $array[$i] = $arr[$random_key[rand(0, $arrlength-1)]];
    }
}
$text = implode(" ", $array);
echo $text;
Run Code Online (Sandbox Code Playgroud)