@DjimiDjimi

Как найти наибольшее значение в массиве и выбрать из него данные(PHP)?

Добрый день. Есть данные для парсинга, выглядят вот так:

spoiler
<div style="display: none">
	<div class="goods_line 691433" data-type="goods_perfumery">
	<div class="w60 left align-center">
	691433</div>
	<div class="w300 left">
	<span class="goods_name">Туалетная вода Power Woman</span>
	</div>
	<div class="w150 left">2360.30 руб.</div>
	<div class="w150 left">
	<a class="button projectDetails" data-id="691433"  data-href="" href="javascript:void(0);">Посмотреть товар</a>
	</div>
	<div class="w150 right align-center">
	<a href="javascript:" data-id="691433" title="Добавить в корзину" class="tipsy_class bother_project"></a>
	</div>
	<div class="clear"></div><!-- /clear -->
	</div>
</div>

<div style="display: none">
	<div class="goods_line 691435" data-type="goods_perfumery">
	<div class="w60 left align-center">
	691435</div>
	<div class="w300 left">
	<span class="goods_name">Туалетная вода Be the Legend</span>
	</div>
	<div class="w150 left">3140 руб.</div>
	<div class="w150 left">
	<a class="button projectDetails" data-id="691435"  data-href="" href="javascript:void(0);">Посмотреть товар</a>
	</div>
	<div class="w150 right align-center">
	<a href="javascript:" data-id="691435" title="Добавить в корзину" class="tipsy_class bother_project"></a>
	</div>
	<div class="clear"></div><!-- /clear -->
	</div>
</div>

<div style="display: none">
	<div class="goods_line 30173" data-type="goods_perfumery">
	<div class="w60 left align-center">
	30173</div>
	<div class="w300 left">
	<span class="goods_name">Туалетная вода Eclat Homme</span>
	</div>
	<div class="w150 left">1999.90 руб.</div>
	<div class="w150 left">
	<a class="button projectDetails" data-id="30173"  data-href="" href="javascript:void(0);">Посмотреть товар</a>
	</div>
	<div class="w150 right align-center">
	<a href="javascript:" data-id="30173" title="Добавить в корзину" class="tipsy_class bother_project"></a>
	</div>
	<div class="clear"></div><!-- /clear -->
	</div>
</div>


в примере указано 3 блока, 1 блок = 1 товару. Необходимо вытащить goods_line ****** строку но по убыванию цены. То-есть должно получиться вот такой список:
goods_line 30173
goods_line 691433
goods_line 30173
  • Вопрос задан
  • 410 просмотров
Пригласить эксперта
Ответы на вопрос 3
iNickolay
@iNickolay
Самый топорный вариант: пройдитесь по массиву, сравнивая значение, и при условии что оно больше - перезаписывайте переменную.

Или если все числа у вас типа integer, то используйте функцию max()
Ответ написан
phpguru
@phpguru
PHP программист
$array = [
   'goods_line 30173',
   'goods_line 691433',
   'goods_line 30173'
];

$array_sort = [];

foreach ($array as $val) {
    $int = intval(preg_replace('~[^0-9]+~', '', $val));
    $array_sort[$int][] = [$val];
}

ksort($array_sort);
var_dump($array_sort);


Это для сортировки код. А что бы вытащить данные с html, можно юзать php-simple-html-dom-parser, например.
Ответ написан
Комментировать
@SharuPoNemnogu
не язык плохой, программисты такие...
$dom = new \DOMdocument();
$dom->loadHtml('<div style="display: none">
  <div class="goods_line 691433" data-type="goods_perfumery">
  <div class="w60 left align-center">
  691433</div>
  <div class="w300 left">
  <span class="goods_name">Туалетная вода Power Woman</span>
  </div>
  <div class="w150 left">2360.30 руб.</div>
  <div class="w150 left">
  <a class="button projectDetails" data-id="691433"  data-href="" href="javascript:void(0);">Посмотреть товар</a>
  </div>
  <div class="w150 right align-center">
  <a href="javascript:" data-id="691433" title="Добавить в корзину" class="tipsy_class bother_project"></a>
  </div>
  <div class="clear"></div><!-- /clear -->
  </div>
</div>

<div style="display: none">
  <div class="goods_line 691435" data-type="goods_perfumery">
  <div class="w60 left align-center">
  691435</div>
  <div class="w300 left">
  <span class="goods_name">Туалетная вода Be the Legend</span>
  </div>
  <div class="w150 left">3140 руб.</div>
  <div class="w150 left">
  <a class="button projectDetails" data-id="691435"  data-href="" href="javascript:void(0);">Посмотреть товар</a>
  </div>
  <div class="w150 right align-center">
  <a href="javascript:" data-id="691435" title="Добавить в корзину" class="tipsy_class bother_project"></a>
  </div>
  <div class="clear"></div><!-- /clear -->
  </div>
</div>

<div style="display: none">
  <div class="goods_line 30173" data-type="goods_perfumery">
  <div class="w60 left align-center">
  30173</div>
  <div class="w300 left">
  <span class="goods_name">Туалетная вода Eclat Homme</span>
  </div>
  <div class="w150 left">1999.90 руб.</div>
  <div class="w150 left">
  <a class="button projectDetails" data-id="30173"  data-href="" href="javascript:void(0);">Посмотреть товар</a>
  </div>
  <div class="w150 right align-center">
  <a href="javascript:" data-id="30173" title="Добавить в корзину" class="tipsy_class bother_project"></a>
  </div>
  <div class="clear"></div><!-- /clear -->
  </div>
</div>');


$xpath = new \DOMXpath($dom);

$divs = $xpath->query("//div[starts-with(@class, 'goods_line')]");
$prices = [];
foreach ($divs as $div) {
	$prices[$div->getAttribute('class')] = (float) $xpath->query("div[starts-with(@class, 'w150')]", $div)->item(0)->nodeValue;
}

arsort($prices, SORT_NUMERIC);

print_r(array_keys($prices));
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы