如何在每个循环中完成变量?
$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。”
答案 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(略有调整,因为我无法访问您的产品元)。