У меня есть два массива, которые
$a = array( array( 'id' => 1, 'name' => "Facebook" ), array( 'id' => 2, 'name' => "Twitter" ), array( 'id' => 3, 'name' => "Google" ), array( 'id' => 4, 'name' => "Linkdin" ), array( 'id' => 5, 'name' => "Github" ), );
И еще одно,
$b = array(1, 3, 5);
В соответствии со значением массива $b в качестве результата будет выбран идентификатор ассоциативного массива $a.
Так что результат будет,
$result = $a = array( array( 'id' => 1, 'name' => "Facebook" ), array( 'id' => 3, 'name' => "Google" ), array( 'id' => 5, 'name' => "Github" ), );
Простой один лайнер (более читаемый с 4 строками):
$result = array_filter(
$a,
function($v) use ($b) { return in_array($v['id'], $b); }
);
foreach ($a as $key => $value) {
if (in_array($value['id'], $b)) {
$result[] = $value;
}
}
Другой способ вычисления пересечения:
$result = array_intersect_key(array_column($a, null, 'id'), array_flip($b));
$a
по id
$b
, чтобы получить значения в качестве ключей
Вы пробовали что-нибудь до сих пор?