Выборка по одному массиву из второго
Чет я запутался, помогите с алгоритмом есть два массива
Array
(
[4] => 0
[20] => 0
[21] => 1
[25] => 1
[23] => 0
)
и
Array
(
['21'] => on
['23'] => on
)
Надо в случае совпадения ключей, в первый массив записать 1, а все остальные значения, ключи которых не совпадают с ключами массива 2 - заполнить 0
Записать у меня получилось, перебирая второй массив, и делая
$k = intval(str_replace('\'', '', $k));
затем
$array1[k] = 1;
но почему-то не могу догнать как заполнить остальные значения первого массива 0 а городить кучу форичей как-то не хочется
Ответы (2 шт):
Автор решения: Dmitriy
→ Ссылка
$arr1 = Array
(
[4] => 0
[20] => 0
[21] => 1
[25] => 1
[23] => 0
);
$arr2 = Array
(
['21'] => on
['23'] => on
);
foreach($arr2 as $k => $v){
if (array_key_exists($k, $arr1)) {
$arr1[$k] = 1;
}else{
$arr1[$k] = 0;
}
}
Автор решения: Anton Mironov
→ Ссылка
$arr1 = [
4 => 0,
20 => 0,
21 => 1,
25 => 1,
23 => 0,
];
$arr2 = [
'21' => 'on',
'23' => 'on'
];
array_walk($arr1, function(&$value, $key) use ($arr2){
$value = array_key_exists($key, $arr2) ? 1 : 0;
});
// $arr1 = array(5) {
// [4] => int(0)
// [20] => int(0)
// [21] => int(1)
// [25] => int(0)
// [23] => int(1)
// }