我试图检查数组中是否有另一个数组的值。函数array_key_exist()看起来像我正在搜索的东西,但我不知道如何将函数的键值作为数组。下面是代码:
$risultato_query_controllo_numero = mysql_query($query_controllo_numero);
$voucher_esistenti = array();
while(($row = mysql_fetch_assoc($risultato_query_controllo_numero))) {
$voucher_esistenti[] = $row['numero'];
}它用数字填充第一个数组:
$voucher = range($numero, $numero + $quantita);它用数字填充第二个数组。
现在我需要做的是检查$voucher中的任何值是否存在于$voucher_presenti中。
发布于 2016-06-22 12:15:19
您可以使用array_intersect函数:
$overlap = array_intersect($voucher, $voucher_presenti); 您可以在文档中找到更多的示例。
发布于 2016-06-22 12:23:04
您可以使用in_array()函数来获得正在寻找的结果。
$arrayOne = range(1, 10);
$arrayTwo = range(5, 15);
foreach ($arrayOne as $value) {
if (in_array($value, $arrayTwo)) {
echo 'value '.$value.' is in the first and second array.<br />';
}
}资源
发布于 2016-06-22 12:31:45
in_array可能是满足您需要的一个很好的解决方案,例如,只有当您在sql行中有一个新值时,才能分配$voucher_esistenti。
$risultato_query_controllo_numero=mysql_query($query_controllo_numero);
$voucher_esistenti=array();
while(($row = mysql_fetch_assoc($risultato_query_controllo_numero))){
if(!in_array($row['numero'], $voucher_esistenti) {
$voucher_esistenti[] = $row['numero'];
}
} // this solution isn't optimal, because you will check subarrays with each new value通过使用复杂度为O(1) (最佳复杂度:)的hashmap,有一种更好的方法来实现这一点。
$risultato_query_controllo_numero=mysql_query($query_controllo_numero);
$voucher_esistenti=array();
while(($row = mysql_fetch_assoc($risultato_query_controllo_numero))){
// here is what we changed, instead of key = value, we actually append keys
if(!isset($voucher_esistenti[$row['numero']]) {
$voucher_esistenti[$row['numero']] = true;
}
}
/*
The second implementation is a lot faster due to the algorithm, but you will have to change the reading of $voucher_esistenti array. */https://stackoverflow.com/questions/37967698
复制相似问题