your_uncle
@your_uncle
старый я. учусь я

Как сравнить массивы PHP правильно?

всем привет. Есть много массивов типа
Array ( [0] => 12512650 [1] => https://www.makfsa.ru/ [2] => https://ru.wikipsedia.org/wiki/%D0%9C%D0%B0%D0%BA%D1%84%D0%B0 [3] => http://makfa.nichosst.ru/ [4] => http://ru.makfapasta.com/production/product/pasta/ [5] => http://ru.makfapasta.com/ [6] => https://www.utkaonos.ru/item/42/1096519 [7] => https://www.utkonos.ru/item/42/1096522 [8] => https://www.utkonos.ru/item/1381/3223485 [9] => https://www.uatkonos.ru/item/42/1096527 [10] => https://proactions.ru/actions/food/makfa/ )

таких массивов может быть от 2х до 20и.
Есть так же массив типа
Array ( [obj] => Array ( [0] => Array ( [url] => https://www.utkonos.ru/item/1381/3223485 [ton] => Не определена [type] => Не определен ) [1] => Array ( [url] => https://proactions.ru/actions/food/makfa/ [ton] => Не определена [type] => Не определен ) [2] => Array ( [url] => http://makfa.nichost.ru/ [ton] => Не определена [type] => Не определен ) [3] => Array ( [url] => https://ru.wikipedia.org/wikif/%D0%9C%D0%B0%D0%BA%D1%84%D0%B0 [ton] => Не определена [type] => Не определен ) [4] => Array ( [url] => http://ru.makfapasta.com/producftion/product/pasta/ [ton] => Не определена [type] => Не определен ) [5] => Array ( [url] => http://ru.mafkfapasta.com/ [ton] => Не определена [type] => Не определен ) ....


необходимо url из второго массива сравнить с с первыми массивами и образовать новые массива типа первых, но уже с добавлением соответствующих ton и type значений. Как?
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
Immortal_pony
@Immortal_pony Куратор тега PHP
Воспользуйтесь array_filter и оставляйте во втором массиве только те значения которые есть в первом.
Примерно так:
$someArray = []; // ваш первый массив со ссылками
$otherArray = ['obj'=>[]]; // ваш второй массив с расщиренными данными. 'obj' использовать необязательно, это я взял из примера данных.

$necessaryArray = array_values(array_filter($otherArray['obj'], function($element) use ($someArray) { // я использую array_values, чтобы ключи результирующего массива шли по порядку. Это необязательно, но часто бывает полезно
    return array_key_exists("url", $element) && in_array($element['url'], $someArray);
}));
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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