用foreach编辑和完成字符串

时间:2018-06-12 08:10:11

标签: php wordpress foreach

如何在每个循环中完成变量?

$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 :(得分:1)

您遇到的问题是您将字符串重新保存回同一个变量中。相反,您将其保存到$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);
}

Here's a working php fiddle略有调整,因为我无法访问您的产品元)。