0

最初の配列 $aAllCities があるとします

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

そして別の配列 $aNotSupportedCities as

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

このような配列を取得することは可能ですか?

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

他の配列に存在するキーの配列値を削除したい

4

5 に答える 5

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

}
于 2012-04-19T07:35:42.127 に答える
1

これを試して:

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

お役に立てれば。

于 2012-04-19T07:41:10.330 に答える
1

他の答えは正しいですが、よりスムーズで高速な方法は次のとおりです。
$supportedCities = array_diff_key($aAllCities, $aNotSupportedCities);

$aAllCitiesこれは、キーを持たないすべての値を返します$aNotSupportedCities

これはキーを介して 2 つの配列を比較するため、次のようにする必要があることに注意してください$aNotSupportedCities

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

幸運を祈ります。

于 2012-04-19T07:46:21.810 に答える
0
$supportedCities = array_diff_key($aAllCities, array_values($aNotSupportedCities));
于 2012-04-19T07:40:14.920 に答える
0
$new = $aAllCities;
foreach($aNotSupportedCities as $id) {
  if (isset($new[$id]) {
    unset($new[$id]);
  }
}
于 2012-04-19T07:33:53.377 に答える