Объединение массивов разных типов - PullRequest
1 голос
/ 28 сентября 2011

у меня есть два массива:

    $a =array(   
        'standard'      => (object) array( 'id' => 'standard',      'title' => 'AustPost Standard' ), 
        'registered'    => (object) array( 'id' => 'registered',    'title' => 'AustPost Registered' ), 
        'insured'       => (object) array( 'id' => 'insured',       'title' => 'AustPost Insured' ),
        'express'       => (object) array( 'id' => 'express',       'title' => 'AustPost Express' ),
        'satchexp'      => (object) array( 'id' => 'satchexp',      'title' => 'AustPost Satchel Express' ),
        'satchreg'      => (object) array( 'id' => 'satchreg',      'title' => 'AustPost Satchel Registered' ),
        'satchpla'      => (object) array( 'id' => 'satchpla',      'title' => 'AustPost Satchel Platnium' )
    );

и

$b = array( 'standard', 'sea', 'air', 'satchexp', 'satchreg', 'satchpla' )

как мне создать новый массив $ c, содержащий только элементы из массива $ a, которые появляются в массиве $ b?

1 Ответ

5 голосов
/ 28 сентября 2011

Это называется пересечение массива

Вы можете сделать это либо по ключу, либо по значению.В вашем случае в $ a у вас есть (standard ',' sea ',' air '..) в качестве ключей, но в $ b эти слова на самом деле являются значениями, а ключи (0, 1, 2 ...)

Вы можете легко перевернуть массив $ b для создания ключей массива слов.Тогда вы можете пересекать массивы с помощью клавиш

$c = array_intersect_key($a, array_flip($b));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...