У меня есть 2 массива с разными структурами (размерностью), мне нужно найти значения (post_name) из $ first в $ second, а затем получить идентификатор от $ second, чтобы создать уникальный массив с post_name $ first и соответствующий идентификатор, основанный в $ второй. я надеюсь, что я достаточно ясен …
Мне нужно сохранить тот же порядок первого Спасибо
$first= Array ( [0] => 'lundi-5', [1] => 'mardi-5', [2] => 'lundi-1', [3] => 'mardi-1', ); $second=Array ( [0] => WP_Post Object ( [ID] => 2878 [post_name] => lundi-1 ) [1] => WP_Post Object ( [ID] => 3180 [post_name] => mardi-1 ) [2] => WP_Post Object ( [ID] => 3181 [post_name] => lundi-5 ) [3] => WP_Post Object ( [ID] => 3182 [post_name] => mardi-5 )
Просто попробуйте:
$keys = array_map(function ($post) { return $post->ID; }, array_filter($second, function ($post) use ($first) { return in_array($post->post_name, $first); }));
Вывод:
array(2) { [2]=> int(3181) [3]=> int(3182) }
Чтобы вернуть целые объекты, используйте:
$posts = array_filter($second, function ($post) use ($first) { return in_array($post->post_name, $first); });