Php 替换数组中的值不';行不通
我快发疯了,花了几个小时在数组中尝试替换值的不同方法,但我无法让它工作Php 替换数组中的值不';行不通,php,arrays,replace,foreach,Php,Arrays,Replace,Foreach,我快发疯了,花了几个小时在数组中尝试替换值的不同方法,但我无法让它工作 foreach($potentialMatches as $potentialKey) { $searchKeywordQuery = "SELECT keyword, id FROM picture WHERE id='$potentialKey'"; $searchKeywords = mysql_query($searchKeywordQuery) or die(mysql_error()); while
foreach($potentialMatches as $potentialKey)
{
$searchKeywordQuery = "SELECT keyword, id FROM picture WHERE id='$potentialKey'";
$searchKeywords = mysql_query($searchKeywordQuery) or die(mysql_error());
while ($searchKeyWordsRow = mysql_fetch_array($searchKeywords))
{
$keyword = $searchKeyWordsRow['keyword'];
$pictureKeywordArray[$searchKeyWordsRow['id']]['keywords'] = explode(",", $keyword);
$pictureKeywordArray[$searchKeyWordsRow['id']]['match'] = 4;
}
}
foreach($pictureKeywordArray as $key = > $picValue)
{
foreach($picValue['keywords'] as $key = > $picIdValue)
{
if ($picIdValue == $searchIdKey)
{
echo $picValue['match'];
$picValue['match']++;
echo $picValue['match'];
}
}
}
foreach($pictureKeywordArray as $key = > $picValue)
{
echo $picValue['match'];
}
正如您所看到的,我是新手,当我在foreach循环中回显picValue['match']时,它会在“++”之后给我一个正确的值。但在下面,当我再次调用数组时,它给出的值是4,而不是预期的5。提前感谢您的帮助。在这一秒中,您需要通过引用调用它:
foreach($pictureKeywordArray as $key => &$picValue)
{ //^-- `&` makes it by reference
foreach($picValue['keywords'] as $key => $picIdValue)
{
if ($picIdValue == $searchIdKey)
{
echo $picValue['match'];
$picValue['match']++; //now updates what you want it to update
echo $picValue['match'];
}
}
}
foreach
处理数据的副本。必须使用引用来修改原始文件:
foreach ($foo as $i => &$f)
{
$f++;
}
unset($f); // important to do this if you ever want to reuse that variable later
因为您在第一种情况下使用项目副本,请尝试使用
$pictureKeywordArray[$key]['match']
而不是$picValue['match']
+1。这(使用密钥)通常是最干净的解决方案。引用可能会变得混乱。在这个变量中,$key被覆盖(因为在两个foreach中都使用了),我们应该小心这个。。。