首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以数组为键的array_key_exist()

以数组为键的array_key_exist()
EN

Stack Overflow用户
提问于 2016-06-22 12:12:37
回答 3查看 110关注 0票数 3

我试图检查数组中是否有另一个数组的值。函数array_key_exist()看起来像我正在搜索的东西,但我不知道如何将函数的键值作为数组。下面是代码:

代码语言:javascript
运行
复制
$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'];
}

它用数字填充第一个数组:

代码语言:javascript
运行
复制
$voucher = range($numero, $numero + $quantita);

它用数字填充第二个数组。

现在我需要做的是检查$voucher中的任何值是否存在于$voucher_presenti中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-22 12:15:19

您可以使用array_intersect函数:

代码语言:javascript
运行
复制
$overlap = array_intersect($voucher, $voucher_presenti); 

您可以在文档中找到更多的示例。

票数 4
EN

Stack Overflow用户

发布于 2016-06-22 12:23:04

您可以使用in_array()函数来获得正在寻找的结果。

代码语言:javascript
运行
复制
$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 />';
    }
}

资源

  • 数组()-手册
票数 1
EN

Stack Overflow用户

发布于 2016-06-22 12:31:45

in_array可能是满足您需要的一个很好的解决方案,例如,只有当您在sql行中有一个新值时,才能分配$voucher_esistenti。

代码语言:javascript
运行
复制
$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,有一种更好的方法来实现这一点。

代码语言:javascript
运行
复制
$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. */
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37967698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档