0

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]値、つまりKEY最初の配列に存在しない値を取得したいと考えています。

これは私が試したスニペットの 1 つですが、他のすべてと同様に、これは必要なロジックではありません。

            $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 => $valueで構造を使用します。foreach

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 に答える