Есть два многомерных массива, arr1
и arr2
. Необходимо проверить, есть ли совпадения по значению arr1[$i][3]
с arr2[$i][0]
,
если есть дописать в конец массива arr1[$i]
значение arr2[$i][1]
.
<?php
$arr1 = array(
array('a', 'b', 'c', '2231'),
array('a' , 'b' , 'c' , '2344')
);
$arr2 = array(
array('2231', '658'),
array('2456' . '0')
);
$size_arr2 = count($arr2);
$size = count($arr1);
for ($i = 0; $i <= $size; $i++) {
$arr1[$i][] = 'some';
}
print_r($arr1);
// Первый массив в который дописывмем значение из второго массива если есть совпадение по [$i][3]
array (
[0] => Array
(
[0] => google / cpc
[1] => Paris city
[2] => Oneclick_Order_0983451
[3] => 456894 // значение для сравения
[4] => 0
)
[1] => Array
(
[0] => google / cpc
[1] => Kyiv city
[2] => Oneclick_Order_0983421
[3] => 456891 // значение для сравения
[4] => 0
)
[2] => Array
(
[0] => google / cpc
[1] => Kyiv city
[2] => Oneclick_Order_0483421
[3] => 456892 // значение для сравения
[4] => 0
)
);
// Второй массив со стоимостью
array (
[0] => Array
(
[0] => 456894 // значение для сравения
[1] => 152.45 // значение которое записываем
)
[1] => Array
(
[0] => 657585
[1] => 0
)
[2] => Array
(
[0] => 655685
[1] => 845.69
)
)
На выходе получаем первый массив с заполеными ключами из второго.
Если требуется сранивнить каждый с каждым, а не только i
-тые, то как вариант:
$tmp = array_column($arr2, 1, 0);
foreach($arr1 as &$v){
if(array_key_exists($v[3], $tmp)){
$v[] = $tmp[$v[3]];
}
}
в целом цикл можно заменить на array_walk
, но смысла нет, короче не станет
вы берете первый элемент из $arr1 и сравниваете с первым из $arr2. Потом второй из arr1, и второй arr2. А надо взять первый элемент первого, и проверит на совпадение все элементы второго. То есть у вас arr1[i] и arr2[i], а надо arr2[j]. Фактически в вопросе зря использованы одинаковые индексы $i
for ($i = 0; $i < sizeof($arr1); $i++) {
foreach ($arr2 as $k => $v) {
if ($arr1[$i][3] == $v[0]) {
$arr1[$i][] = $v[1];
break;
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Возможно ли как-то узнать email адрес, на который отправляются заполненные данные? http://3206161ru/services/zakaz-dokumenta/zakaz-dokumenta/
Всем привет, не могу понять как и с чего начать подключение liqpay к Yii2 (после регистрации в liqpay) и выполнения команды: