Отображать один и тот же случайный ключ несколько раз в сообщении

Этот код, вероятно, не самый лучший для звонка по клику, но он работает.

У меня есть 3 числа, которые я хочу рандомизировать в сообщении. Когда дело доходит до отображения только один раз с уникальным фрагментом кода, это нормально. Но когда дело доходит до отображения одного и того же случайного числа в два раза ниже в сообщении, это сложно. Отображаемые цифры разные.

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

$numbers = array("800-433-7300", "800-633-3711", "800-756-8613");
switch ($numbers[array_rand($numbers)]) {
   case "800-433-7300":
      echo '<a href = "tel:8004337300">800-433-7300</a>';
      break;
   case "800-633-3711":
      echo '<a href = "tel:8006333711">800-633-3711</a>';
      break;
   default:
      echo '<a href = "tel:8007568613">800-756-8613</a>';
      break;
}

Я ожидаю, что 800-433-7300 будет отображаться в другой части страницы. Следующая страница обновления, 800-633-3711, также будет отображаться несколько раз и так далее...

Есть идеи ? Не могли бы вы предложить мне конкретную функцию, структуру или ресурс страницы, чтобы решить эту проблему самостоятельно?

Спасибо

Не уверен, что понял, но разве вы не можете использовать var, чтобы получить этот случайный номер, а затем использовать var на своей странице?

Mickaël Leger 17.05.2019 10:31

Вставьте значение в переменную, а затем используйте эту переменную столько раз, сколько захотите после этой точки.

RiggsFolly 17.05.2019 10:31
$save_it = '<a href = "tel:8004337300">800-433-7300</a>';
RiggsFolly 17.05.2019 10:33

Я думаю, он имеет в виду писать разные числа при перезагрузке нескольких страниц. Я бы сохранил его в файле cookie, а затем при следующей перезагрузке, в зависимости от значения файла cookie, показывал другой

Amarnasan 17.05.2019 10:39

Вы можете использовать средство форматирования для форматирования во внешнем интерфейсе (javascript) и просто сохранить число как строку unformatet. Это улучшит читаемость и уменьшит избыточность — вы можете избавиться от этой логики и оператора switch на бэкэнде.

inetphantom 17.05.2019 10:45

Спасибо за ваши ответы! Хранение var var было хорошим решением

Nick83 17.05.2019 11:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
6
48
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте var для хранения значения:

$numbers = array("800-433-7300", "800-633-3711", "800-756-8613");
$rand_num = $numbers[array_rand($numbers)];

Затем используйте его там, где вам это нужно на вашей странице:

echo '<a href = "tel:'.str_replace('-', '', $rand_num).'">$rand_num</a>';

Теперь, если вам всегда нужна одна и та же строка для эха, сохраните строку:

$numbers = array("800-433-7300", "800-633-3711", "800-756-8613");
switch ($numbers[array_rand($numbers)]) {
  case "800-433-7300":
    $rand_string = '<a href = "tel:8004337300">800-433-7300</a>';
    break;
  case "800-633-3711":
    $rand_string = '<a href = "tel:8006333711">800-633-3711</a>';
    break;
  default:
    $rand_string = '<a href = "tel:8007568613">800-756-8613</a>';
    break;
}

И теперь вы можете повторить строку, где хотите:

echo $rand_string;

Если я правильно понимаю, вы хотите, чтобы при каждом обновлении страницы появлялся другой номер. Если это так, я бы перебирал массив телефонных номеров с помощью файлов cookie.

И вы можете использовать один и тот же номер для каждого обновления страницы, потому что он хранится в переменной $phones[$phoneIndex]

Если вам нужно больше чисел, просто проверните их в массиве.

$phones = ['800-433-7300','800-633-3711','800-756-8613'];

$phoneIndex= isset($_COOKIE['phoneIndex']) ? $_COOKIE('phoneIndex') : 0;

echo "<a href=\"$phones[$phoneIndex]\">$phones[$phoneIndex] </a>";

setcookie('phoneIndex', ($phoneIndex+1)%3);

Спасибо @amarnasan, это тоже отличный вариант!

Nick83 17.05.2019 11:59

Другие вопросы по теме