Если вы разработчик WooCommerce и хотите внести разнообразие в свой магазин, отображая случайные товары, возможно, вы столкнулись с распространенной проблемой: функция случайного массива иногда генерирует одни и те же значения в последовательных итерациях. В этой статье блога мы рассмотрим несколько методов, позволяющих гарантировать, что ваш цикл магазина WooCommerce каждый раз отображает уникальные и разные значения. Итак, давайте углубимся и встряхнем ситуацию!
Метод 1: перетасовать массив
Один простой подход — перетасовать массив перед проходом по нему. Это гарантирует, что элементы расположены в случайном порядке, предотвращая последовательное дублирование. Вот пример использования PHP:
$products = // your array of products
shuffle($products);
foreach ($products as $product) {
// display the product in your shop loop
}
Метод 2. Удаление ранее отображавшихся значений
Другой метод — удалить каждое отображаемое значение из массива, гарантируя, что оно не будет повторяться. Вот пример:
$products = // your array of products
while (!empty($products)) {
$randomIndex = array_rand($products);
$product = $products[$randomIndex];
// display the product in your shop loop
unset($products[$randomIndex]);
}
Метод 3: отслеживание отображаемых значений
Вы можете отслеживать отображаемые значения и исключать их из будущих итераций. Вот пример:
$products = // your array of products
$displayed = array();
foreach ($products as $product) {
$randomIndex = array_rand($products);
while (in_array($randomIndex, $displayed)) {
$randomIndex = array_rand($products);
}
$displayed[] = $randomIndex;
$product = $products[$randomIndex];
// display the product in your shop loop
}
Метод 4: алгоритм перемешивания Фишера-Йейтса
Алгоритм перемешивания Фишера-Йейтса — это более продвинутый метод, который эффективно перемешивает массив. Вот пример использования PHP:
$products = // your array of products
$count = count($products);
for ($i = $count - 1; $i > 0; $i--) {
$j = mt_rand(0, $i);
[$products[$i], $products[$j]] = [$products[$j], $products[$i]];
}
foreach ($products as $product) {
// display the product in your shop loop
}
Реализуя любой из этих методов, вы можете гарантировать, что ваш цикл магазина WooCommerce каждый раз отображает уникальные значения, предотвращая последовательные дубликаты. Независимо от того, решите ли вы перетасовать массив, удалить ранее отображаемые значения, отслеживать отображаемые значения или использовать алгоритм перемешивания Фишера-Йейтса, цикл вашего магазина станет более привлекательным и привлекательным для ваших посетителей. Приятного кодирования!