Сравнить индексы массивов
Есть два массива:
$arr = ['a','b','c','d']
$arr2 = ['b','c','d']
Я могу как-то сделать, чтобы повторяющиеся элементы получили во втором массиве индексы первого? То есть, чтобы это выглядело [1] => b [2] => c [3] => d у $arr2.
Ответы (3 шт):
Автор решения: Bloom
→ Ссылка
<?php
$arr = ['a','b','c','d'] ;
$arr2 = ['b','c','d'] ;
$result = array_intersect($arr, $arr2);
foreach ($arr as $key => $value) {
foreach ($result as $key1 => $value1) {
if( $value == $value1 ) {
$arr3[$key] = $value1;
}
}
}
print_r($arr3);
?>
Автор решения: Alpha
→ Ссылка
Ещё один вариант:
$arr = ['a','b','c','d'];
$arr2 = ['b','c','d'];
$arr3 = [];
foreach($arr2 as $item){
if(in_array($item, $arr)){
$key = array_search($item, $arr);
$arr3[$key] = $item;
}
}
Другой случай, если во втором массиве будут элементы которых нет в 1м
$arr = ['a','b','c','d'];
$arr2 = ['b','c','d','j'];
$arr3 = [];
foreach($arr2 as $item){
if(in_array($item, $arr)){
$key = array_search($item, $arr);
$arr3[$key] = $item;
}else{
$arr3[] = $item;
}
}
Автор решения: Ivan
→ Ссылка
$arr = ['a','b','c','e','d'];
$arr2 = ['b','c','d'] ;
$arr2 = array_intersect($arr, $arr2);
print_r($arr2);
или
$diff = array_diff($arr, $arr2);
$arr2 = $arr;
foreach ($diff as $key => $val){
unset($arr2[$key]);
}
print_r($arr2);