@Emmet1

Как сформировать приоритет в php массиве?

Есть массив с адресами картинок Для галереи товара.
Нужно сделать так, чтобы при выводе картинок через foreach, картинки выводились в определенном порядке.
Сначала та, которая содержит в названии "lux", потом та которая prod_3, prod_5 и в конце GOLD.
Это реально сделать?

array(1) {
  [0]=>
  array(1) {
    ["small"]=>
    string(58) "/images/0001_GOLD.jpg"
  }
  [1]=>
  array(1) {
    ["small"]=>
    string(65) "/images/002_prod_3.jpg"
  }
  [2]=>
  array(1) {
    ["small"]=>
    string(65) "/images/002_prod_5.jpg"
  }
  [3]=>
  array(1) {
    ["small"]=>
    string(65) "/images/002_lux.jpg"
  }
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dzhebrak
Кроме usort/uasort можно разбить ссылки на отдельные массивы, а затем собрать обратно в один, который и перебрать с помощью foreach:

$arr = [
	["small"=> "/images/0001_GOLD.jpg"],
  	["small"=> "/images/003_lux.jpg"],
  	["small"=> "/images/002_prod_3.jpg"],
  	["small"=> "/images/0002_GOLD.jpg"],
  	["small"=> "/images/002_prod_5.jpg"],
  	["small"=> "/images/002_lux.jpg"],
  	["small"=> "/images/002_prod_4.jpg"],
];

$lux = [];
$prod = [];
$gold = [];

foreach ($arr as $v) {
	if(strpos($v['small'], 'lux') !== false) {
		$lux[] = $v;
	}

	if(strpos($v['small'], 'prod_') !== false) {
		$prod[] = $v;
	}

	if(strpos($v['small'], 'GOLD') !== false) {
		$gold[] = $v;
	}
}

print_r(array_merge($lux, $prod, $gold));
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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