2012-04-19 3 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

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 
) 

удачи.

Смежные вопросы