foreach ($bing_array as $bing_array_val)
{
foreach ($final_array as $final_array_val)
{
if ($final_array_val["link"] == $bing_array_val["link"])
{
$final_array_val["rank"] += $bing_array_val["rank"];
}
}
}
上面的代码有两个foreach循环,它们是嵌套的。
它应该针对每个final_array [“link”]测试每个bing_array [“link”],如果它们相同,则final_array [“rank”]值应为+ = bing_array [“rank”]但是当我回显时final_array,[“rank”]值不变。
我认为这是一个语法问题,我哪里错了?
由于
答案 0 :(得分:1)
您需要使用引用语法(&
前缀):
foreach ($final_array as &$final_array_val)
{
}
unset($final_array_val);
请注意,unset
需要断开对最后一个值的引用。阅读更多here。
答案 1 :(得分:1)
以下是您需要的实际代码:
foreach ($bing_array as &$bing_array_val)
{
foreach ($final_array as &$final_array_val)
{
if ($final_array_val["link"] == $bing_array_val["link"])
{
$final_array_val["rank"] += $bing_array_val["rank"];
}
}
unset(&$final_array_val);
}
unset(&$bing_array_val);
在初始代码中,每次循环$ final_array时,都会创建一个名为$ final_array_val的临时值,其中包含内容。然后,你修改了它,然后它被替换为foreach的每次出现。
通过引用传递变量,而不是在foreach中创建一个新的临时变量,而是使用实际变量来保存你对它所做的修改。