array_rand () выполняет все элементы sql операторов php - PullRequest
0 голосов
/ 26 мая 2020

У меня есть следующая функция для сохранения сообщений

  //save post

    function savePost($id_post,$table,$pdo){

         $sql->execute();
         return "saved post".$id_post;
         }

Теперь я создаю массив для сохранения случайных сообщений

 $posts = array();

 $posts[] = savePost("1",$table,$pdo);
 $posts[] = savePost("2",$table,$pdo);
 $posts[] = savePost("3",$table,$pdo);
 $posts[] = savePost("4",$table,$pdo);
 $posts[] = savePost("5",$table,$pdo);

Я возвращаю случайный элемент из $posts, чтобы $sql->execute(); только это указано c сообщение.

 echo $posts[array_rand($posts)];

Он повторяет уникальный случайный элемент, например saved post4, но в таблице ВСЕ элементы массива были выполнены, и все элементы сохранили свои сообщения. Что делаю не так?

Я хочу сохранить только случайное значение.

спасибо.

1 Ответ

0 голосов
/ 26 мая 2020
echo $posts[array_rand($posts)];

просто выводит на экран случайную запись из $posts. Он не играет роли в сохранении данных. Основываясь на показанном вами коде, процесс сохранения всех сообщений уже произошел (посредством повторных вызовов savePost) еще до того, как вы сгенерировали случайное число.

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

Например:

$postIDs = array(1, 2, 3, 4, 5);
echo savePost($postIDs[array_rand($postIDs)], $table, $pdo);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...