Задать вопрос
@SpeakeazyYT1

Как проверить из двух многомерных массивов идентичность артикула и если артикулы из 2-ух массивов не совпадают, то выполняем действие PHP?

Добрый день. Имеется 2 массива:
1 (в котором ищем):
Array
(
	[0] => Array(
		[PROPERTY_31_VALUE] => MTN6710-0004
	),
	
	[1] => Array(
		[PROPERTY_31_VALUE] => HUHG3578-FU
	),
	...
)

2:
Array
(
	[0] => Array(
		[PROPERTY_22_VALUE] => FUGURNG24-0005
	),
	
	[1] => Array(
		[PROPERTY_22_VALUE] => 93858FIHEJ-348
	),
	...
)


Как сделать условие - если в каждом элементе многомерного массива (1) нет совпадения по ариикулу из массива (2), то выполняем действие (например посчитать сколько таких элементов).

Я пробовал использовать следующий код:
foreach ($arr1 as $arr1Item) {

	foreach ($arr2 as $arr2Item) {
		if ($arr2Item['PROPERTY_22_VALUE'] !== $arr1Item['PROPERTY_31_VALUE']) {
			$countElko[] = $arr2Item;
		}
	}
	
}


Но тут есть одно НО, результат был бы успешным, если бы скрипт дошёл до конца, но он обрывается на ошибке нехватки памяти:
mmap() failed: [12] Cannot allocate memory
PHP Fatal error:  Out of memory (allocated 533557248) (tried to allocate 536870920 bytes) in

Как можно данный код оптимизировать?
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@kakisaebalsujit
Попробуй вот так
$do1 = '0';

foreahc ($arr1 as $arr1Item) {
    while (count($arr1) == $i) {
    	foreahc ($arr2 as $arr2Item) {
        	if ($arr1Item !== $arr2Item) {
        		$do = '1';
        		break;
        	}
        	i++;
      	}
    }
}


if ($do == '1') {
	//ваше действие
}

По идеи должно работать)
Ответ написан
Комментировать
erge
@erge
Примус починяю
У вас же оба массива представлены как массив массивов и первый ключ это цифровой индекс.
что если в новый массив запоминать не элементы массива $arr2, а ключи несовпадающих элементов.
По идее это должно занять значительно меньше места.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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