Редактировать и дополнить строку с foreach - PullRequest
0 голосов
/ 12 июня 2018

Как я могу дополнить свою переменную каждым циклом?

$string = "Our products are shoes, pants, shirts."
$products = get_post_meta( post_id, 'products', true );
$matches = get_post_meta( post_id, 'matches', true );

$newPhrase = '';

foreach ($matches as $match){
    $id = searchForId($match, $products); // searching for the right id
    $newPhrase = str_replace($match, $products[$id]['sku'], $string);
}

// $newPhrase should be "Our Products are 3, 4, 9."

Хотя она меняет переменную с каждым foreach, но затем она всегда начинается снова и принимает старую строку.например: «наша продукция - обувь, штаны, 9».

1 Ответ

0 голосов
/ 12 июня 2018

Проблема, с которой вы столкнулись, заключается в том, что вы снова сохраняете строку обратно в ту же переменную.Вместо этого вы сохраняете его в $newPhrase.

Поэтому, когда цикл запускается снова, он снова корректирует старую неизмененную строку, а затем сохраняет ее как переменную $newPhrase, перезаписывая то, что вы делали во время предыдущей итерации цикла.Вот почему вы получаете только последнюю измененную переменную.

Вместо того, чтобы каждый раз захватывать старую строку, вместо этого берите строку, которая была скорректирована, как здесь:

$string = "Our products are shoes, pants, shirts."
$products = get_post_meta( post_id, 'products', true );
$matches = get_post_meta( post_id, 'matches', true );

$newPhrase = $string;

foreach ($matches as $match){
    $id = searchForId($match, $products); // searching for the right id
    $newPhrase = str_replace($match, $products[$id]['sku'], $newPhrase);
}

Вот рабочая скрипта php ( слегка настроена, потому что у меня нет доступа к мета вашего продукта).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...