使用以下代码从数据库返回以下数组:
$skus = array();
$result = mysql_query($sql);
if($result){
while($rows = mysql_fetch_array($result)){
$skus[]=$rows;
}
}
结果:
Array (
[0] => Array {
[0] => PUBELI
[group_sku] => PUBELI
)
[1] => Array (
[0] => PUBESSENTIALS
[group_sku] => PUBESSENTIALS
)
[2] => Array (
[0] => PUBMGRPROGROUPED
[group_sku] => PUBMGRPROGROUPED
)
[3] => Array (
[0] => PUB25GROUPED
[group_sku] => PUB25GROUPED
)
)
我正在使用in_array寻找这个值:
if (in_array('PUBESSENTIALS', $skus))
并返回false。我这样做了吗?
如果DB中的值是字符串,为什么数组值不会用引号括起来?
答案 0 :(得分:1)
假设$ skus是上面显示的完整数组,那么'PUBESSENTIALS'将不会出现在$ skus中,因为$ sku包含子数组。
然而,in_array('PUBESSENTIALS',$ skus [1])将返回true。
尝试循环遍历每个$ skus元素,然后检查in_array(value,childArray)的子元素
答案 1 :(得分:1)
您只是查看第一个数组,而不是任何其他数组。您应该仔细查看每个子阵列。这样的事情可以做到这一点:
foreach($skus as $sku) {
if (in_array('PUBESSENTIALS', $sku)) {
return true;
}
}
答案 2 :(得分:1)
如果您可以使用MySql执行某些操作,请不要使用PHP! 试试这个解决方案:
$sql = "SELECT * FROM table WHERE str = 'PUBESSENTIALS'"; // some query just add WHERE
$result = mysql_query($sql);
if($result) $Row = mysql_fetch_array($result)