在PHP中将令人困惑的逻辑与两个数组匹配?

时间:2013-10-31 13:42:41

标签: php arrays

我有这个数组提供来自API的地理限制信息,这是一个内容被阻止的国家的数组列表:

  

数组([0] => GU [1] => PR [2] => CA [3] => VI [4] => US [5] => UM   [6] => AS [7] => MP [8] => DE)

现在,我有另一个数组存储国家/地区代理信息,如下所示:

$proxies['US'] = 'my_us_proxy_url;
$proxies['DE'] = 'my_de_proxy_url;
$proxies['UK'] = 'my_uk_proxy_url;
$proxies['NL'] = 'my_nl_proxy_url;

我希望获得代理的价值,这将允许用户绕过国家/地区限制,即第一个数组中不存在$proxies[KEY]的{​​{1}}值。

这是我尝试过的一个片段,但就像其他所有内容一样,这不是所需的逻辑。

KEY

3 个答案:

答案 0 :(得分:2)

那将是:

$data = ['GU', 'PR', 'CA', 'VI', 'US', 'UM', 'AS', 'MP', 'DE '];
$proxies['US'] = 'my_us_proxy_url';
$proxies['DE'] = 'my_de_proxy_url';
$proxies['UK'] = 'my_uk_proxy_url';
$proxies['NL'] = 'my_nl_proxy_url';

$result = array_diff_key($proxies, array_flip($data));

答案 1 :(得分:1)

$key => $value循环中使用foreach结构:

foreach ($proxies as $key => $value) {
    if (!in_array($key, $isBlocked)){
        //Find first non blocked proxy and continue
        echo "<br/>" . $value ;
    }
}

Demo!

答案 2 :(得分:0)

通过array_keys从代理服务器阵列获取密钥。通过array_diff获取与其他数组的差异。使用大型数组可能比foreach-loops便宜一些。