Php 通过比较另一个数组的键从一个数组中删除数组值

Php 通过比较另一个数组的键从一个数组中删除数组值,php,arrays,Php,Arrays,假设我有第一个数组,$aAllCities作为 Array ( [21] => London [9] => Paris [17] => New York [3] => Tokyo [25] => Shanghai [11] => Dubai [37] => Mumbai ) 和另一个数组,$ANOTSUPPORTDCITIES作为 Array ( [0] => 37 [1] => 2

假设我有第一个数组,$aAllCities作为

Array
(
   [21] => London
   [9]  => Paris
   [17] => New York
   [3]  => Tokyo
   [25] => Shanghai
   [11] => Dubai
   [37] => Mumbai
)
和另一个数组,$ANOTSUPPORTDCITIES作为

Array
(
   [0] => 37
   [1] => 25
   [2] => 11
)
有可能得到这样的数组吗

Array
(
   [21] => London
   [9]  => Paris
   [17] => New York
   [3]  => Tokyo
)
我想删除其他数组中存在的键的数组值,请尝试以下操作:

$new = $aAllCities;
foreach($aNotSupportedCities as $id) {
  if (isset($new[$id]) {
    unset($new[$id]);
  }
}
$aAllCities = array_flip( $aAllCities );
$aAllCities = array_diff( $aAllCities, $aNotSupportedCities );
$aAllCities = array_flip( $aAllCities );
希望这有帮助。

试试这个:

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

希望这能有所帮助。

其他答案都是正确的,但更流畅、更快的方法是:
$supportedCities=array_diff_key($aAllCities,$aNotSupportedCities)

这将返回
$aAllCities
中没有键的所有值

请注意,这将通过两个数组的键来比较它们,因此您需要将
$anotsupportdcities
设置为如下所示:

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

祝你好运。

其他答案都是正确的,但更流畅、更快的方法是:
$supportedCities=array_diff_key($aAllCities,$aNotSupportedCities)

这将返回
$aAllCities
中没有键的所有值

请注意,这将通过两个数组的键来比较它们,因此您需要将
$anotsupportdcities
设置为如下所示:

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

祝你好运。

谢谢普什佩斯,正是我想要的谢谢普什佩斯,正是我想要的