簡體   English   中英

PHP為什么在str_replace中的第四個參數不起作用?

[英]PHP why is my fourth parameter in str_replace not working?

我是PHP的初學者,不明白為什么這行不通。

<?php
$count = 1;
$body = 'Biceps, Triceps, Quadriceps, Chest, Calves, Forearms are great to train!';
$body = str_replace('Chest', 'Quadriceps', $body);
$body = str_replace('Calves', 'Triceps', $body);
$body = str_replace('Forearms', 'Biceps', $body);
$body = str_replace('Biceps', 'Forearms', $body, $count);
$body = str_replace('Triceps', 'Calves', $body, $count);
$body = str_replace('Quadriceps', 'Chest', $body, $count);
echo $body;
?>

對於后三個替換,盡管第四個參數(假設它定義了替換的數量)設置為1,但它們仍然執行兩次替換,最終得到以下輸出:

“前臂,小腿,胸部,胸部,小腿,前臂非常適合訓練!”

代替:

“前臂,小腿,胸部,四頭肌,三頭肌,二頭肌非常適合訓練!”

...為什么?!

手冊說的是:

如果通過,它將設置為執行的替換次數。

此外,函數簽名帶有&符號,以指示該函數寫入傳遞給它的變量中:

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

簡而言之,它是報告,而不是設置。

每次替換都在執行下一個替換之前發生。

  • 在第三個替換中,您將“前臂”更改為“二頭肌”。
  • 在第四個替換項中,您將在更改時將其更改回
    從“二頭肌”到“前臂”。

第2次和第4次替換的類似問題。 您傳遞給str_replace的“ 1”沒有任何作用。

如果只希望替換第一個實例,請考慮使用preg_replace

第四個參數(來自手冊 )...

計數

如果通過,它將設置為執行的替換次數。

所以不是要做的事,而是要做的事。

作為替代方案,嘗試...

$body1 = strtr($body, 
    ['Chest'=>'Quadriceps','Calves' => 'Triceps', 
        'Forearms' => 'Biceps', 'Biceps' => 'Forearms',
        'Triceps' => 'Calves', 'Quadriceps' => 'Chest'
    ] );

哪個輸出

Forearms, Calves, Chest, Quadriceps, Triceps, Biceps are great to train!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM