@KidsBout

Сравнить два разных ассоциативных массива в php?

Есть два массива:

Array
(
    [0] => Array
        (
            [y] => 67
            [product_id] => 0
            [product_type] => 3
        )

    [1] => Array
        (
            [y] => 30
            [product_id] => 3
            [product_type] => 2
        )

    [2] => Array
        (
            [y] => 17
            [product_id] => 2
            [product_type] => 2
        )

    [3] => Array
        (
            [y] => 23
            [product_id] => 1
            [product_type] => 2
        )

)

Второй массив

(
    [0] => Array
        (
            [title] => Title 1
            [id] => 1
        )

    [1] => Array
        (
            [title] => Title 2
            [id] => 3
        )

    [2] => Array
        (
            [title] => Title 3
            [id] => 2
        )

)


Мне нужно проверять, если совпадает [product_id] первого массива с [id] второго массива, то в первый массив добавлять [type] => [id][title] - второго массива.

Я это делаю так:
1. Считаю длину массива 2.
2. Запускаю for пока $i < Длинны массива 2
3. Сравниваю $i[product_id] и $i[id]
4. Если совпадает, то записываю значение.
Это работает, но срабатывает только 3 раза, потому что длинна второго массива 3, а первый больше, потому всё не просчитывает.
Как быть в таком случае?
  • Вопрос задан
  • 591 просмотр
Решения вопроса 2
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
А зачем считать длинну массива если все равно все перебираете? Запускаете 1 foreach в нем другой и проводите свои махинации.
Так же обратите внимание на array_diff_assoc и други функции работы с массивами. Например in_array и т.д.
Не совсем понимаю Вы сравниваете зависимо от ключей или нет?
Ответ написан
coderisimo
@coderisimo
общая идея ,допустим у Вас массивы $a и $b
foreach ($a as $key=>$val){
		foreach($b as $k=>$v){
				if( $val['product_id'] === $v['id']){
							$a[$key]['type'] = $v['title']; // не совсем понял, что вам нужно сюда писать 
			
			}
		}
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы