0

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

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

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

$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]值。KEY

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

            $isBlocked = array_values;
            //print_r($isBlocked);
            if (in_array('US',$isBlocked))
            {
                echo 'US Blocked';
                foreach ($isBlocked as $value) {

                    if (!array_key_exists($value,$proxies)){
                        //Find first non blocked proxy and continue
                        echo "<br/>" . $value ;
                    }
                }

            }
4

3 回答 3

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));
于 2013-10-31T13:47:45.260 回答
1

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

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

演示!

于 2013-10-31T13:45:35.063 回答
0

通过array_keys从代理数组中获取密钥。通过array_diff获取与另一个数组的差异。使用可能比 foreach 循环便宜一点的大型数组。

于 2013-10-31T13:47:37.027 回答