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

Почему не работает in_array?

Необходимо проверить есть ли хэш товара и вывести только уникальные товары.
$i = 0;
$arr_hash = array();
while($i < 5000000) {
	if($url[$i][1] == NULL) { break; }
	$hash = md5( $price[$i][1] . $name[$i][1] );

	if (!in_array($hash, $arr_hash)) {
		$arr_hash = array_push($arr_hash, $hash);
		echo $url[$i][1] . ' :: ' .$price[$i][1]. ' :: ' .$picture[$i][1]. ' :: ' .$name[$i][1]. ' :: ' .$categoryId[$i][1]. ' :: '  .$hash. ' <br> ' ;
	}
	$i++;
}

При такой конструкции проскакивают товары с одинаковым хэшем, что я делаю не так?
  • Вопрос задан
  • 2402 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
alksily
@alksily
Software developer, CTO
$arr_hash = array_push($arr_hash, $hash);

$arr_hash в данном случае будет не массивом, а количеством элементов в массиве.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SagePtr
@SagePtr
Еда - это святое
int array_push ( array &$array , mixed $value1 [, mixed $... ] )

Порядок аргументов там другой. Да, PHP этим часто страдает, похожие по логике функции часто имеют разный порядок аргументов.
Ответ написан
Ваш ответ на вопрос

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

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