2012-04-19 63 views
0

假设我有第一个数组,$ aAllCities作为删除数组值从一个阵列通过键另一个数组的比较

Array 
(
    [21] => London 
    [9] => Paris 
    [17] => New York 
    [3] => Tokyo 
    [25] => Shanghai 
    [11] => Dubai 
    [37] => Mumbai 
) 

而另一个数组,$ aNotSupportedCities作为

Array 
(
    [0] => 37 
    [1] => 25 
    [2] => 11 
) 

是否有可能得到像这样的数组?

Array 
(
    [21] => London 
    [9] => Paris 
    [17] => New York 
    [3] => Tokyo 
) 

我想删除那些存在于其他阵列

回答

1

排列键的值试试这个:

$aAllCities = array_flip($aAllCities); 
$aAllCities = array_diff($aAllCities, $aNotSupportedCities); 
$aAllCities = array_flip($aAllCities); 

希望这有助于。

+0

感谢Pushpesh,正是我想要的 – skos 2012-04-19 07:45:13

0
$new = $aAllCities; 
foreach($aNotSupportedCities as $id) { 
    if (isset($new[$id]) { 
    unset($new[$id]); 
    } 
} 
2
foreach($aAllCities as $key => $value) { 
    if(in_array($key,$aNotSupportedCities)) { 
     unset($aAllCities[$key]); 
    } 

} 
0
$supportedCities = array_diff_key($aAllCities, array_values($aNotSupportedCities)); 
1

其他的答案是正确的,但更顺畅,更快速的方式来做到这一点是:
$supportedCities = array_diff_key($aAllCities, $aNotSupportedCities);

这将返回从$aAllCities所有值没有钥匙,$aNotSupportedCities

注,这种通过钥匙的两个数组进行比较,所以你需要让你的$aNotSupportedCities这个样子的:

Array 
(
    [37] => something 
    [25] => doesn't really matter 
    [11] => It's not reading this 
) 

好运。

相关问题