我遇到了一个问题,in_array 似乎没有在数组中找到值。该数组由来自多个表的类别和信息构成,但这一切都很好(相对!)。代码的目的是,如果行在 $level 中具有正确的值(在函数中提供),并且在数组中还没有找到 category_id,那么应该添加它。如果在数组中找到它,则应将其完全从数组中删除。我已经通过调试,似乎 in_array 永远不会返回正面,所以我认为我在这里的实现中犯了一个错误。请参见下面的代码:
$sql = 'SELECT c.category_id, cd.name, cp.level ' .
'FROM oc_category c ' .
'LEFT JOIN c_category_description cd ' .
'ON cd.category_id = c.category_id ' .
'LEFT JOIN oc_category_path cp ' .
'ON cp.category_id = c.category_id';
$categories = $mysqli->query($sql);
$i = 0;
while($row = $categories->fetch_array())
{
if ($row['level'] == $level)
{
if (in_array($row['category_id'], $cat_level_1))
{
unset($cat_level_1[$i]);
$i++;
}
else
{
$cat_level_1[] = $row['category_id'];
$i++;
}
}
}
目前,此(截断为 7 行)的输出为:
array (size=40)
0 => string '17' (length=2)
1 => string '18' (length=2)
2 => string '20' (length=2)
3 => string '24' (length=2)
4 => string '25' (length=2)
5 => string '26' (length=2)
任何关于我犯了什么错误的想法都将不胜感激!
山姆