gpt4 book ai didi

php - 如何优化数组搜索以取消设置它并重新索引搜索的数组?

转载 作者:行者123 更新时间:2023-12-03 17:20:12 25 4
gpt4 key购买 nike

如何优化数组搜索以获取未设置的值并重新索引搜索的数组?没关系,如果我有少量数据要搜索,并且比较少量的值。但我的应用程序正在从 Google Analytics API 获取所有网络 Assets 链接(2695)!在将结果显示在屏幕上之前,我需要过滤所有链接以从结果数组中删除列入黑名单的链接(不会显示在结果页面上)。

$b_links; //blacklisted links approximate amount 100-150
$google['analytics']; //all links from analytics except site search links (~3000 links)
foreach ($b_links as $b_link){
foreach ($google['analytics'] as $index=>$a_link){
if ($b_link->uri===$a_link[0]){
unset($google['analytics'][$index]);
}
}
}

$google['analytics'] = array_values($google['analytics']);

我得到->
fatal error :允许的内存大小为 134217728 字节已用完


ini_set('memory_limit', '-1');



我得到->
fatal error :最长执行时间为 30 秒
任何想法我可以如何重构代码以使用更少的内存并使用更少的执行时间。我试图将不需要的链接列表作为过滤器发送到 Analytics api,但谷歌将请求 URI 限制为 2000 个字符!谢谢你的帮助!

如何使用 array_filter ?是否可以?会更快吗?

最佳答案

嗯以下构造应该更快:

首先反向$b_links :

$b_links_reversed = array();
foreach($b_link => $b) {
$b_links_reversed[$b->uri] = true;
}

访问关联数组应该更快。现在我们可以用一个 foreach 来做到这一点:
foreach ($google['analytics'] as $index=>$a_link){
if (isset($b_link_reversed[$a_link[0]])){
unset($google['analytics'][$index]);
}
}

关于php - 如何优化数组搜索以取消设置它并重新索引搜索的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23609866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com