Получение одного и того же значения из нескольких массивов

Я хочу перемешивать элементы массивов и получить одинаковые значения с помощью рандом, но в этом случае shuffle не поможет.

Вобщем код:

Код (Text):
  1.  
  2. $arr1 = [‘green’, ‘red’, ‘blue’];
  3. $arr2 = [‘зеленый’, ‘красный’, ‘синий’];
  4.  
  5. for ($i = 0; $i < 2; $i++){
  6. echo $arr1[$i]; #red
  7. echo $arr2[$i]; #красный
  8. }
  9.  
  10. А когда обновляешь страницу
  11.  
  12. for ($i = 0; $i < 2; $i++){
  13. echo $arr1[$i]; #green
  14. echo $arr2[$i]; #зеленый
  15. }

Должен рандомно получить один элемент из массива $arr1, например red, и красный из массива $arr2.

Каждый раз, когда вы обновляете страницу, вы должны получать другой результат. Но один и тот ключ из массивов.
Знаю я плохо объясняю но думаю вы поймете.

 

и где тут рандом?

 

Код (Text):
  1. $arr1 = [‘green’, ‘red’, ‘blue’];
  2. $arr2 = [‘зеленый’, ‘красный’, ‘синий’];
  3. $random = rand(0, count($arr1) — 1);
  4.  
  5. echo $arr1[$random]; #red
  6. echo $arr2[$random]; #красный
 

Добрый день!
shuffle поможет. Но один и тот ключ из массивов, м.б., например, 0:

PHP:
  1. $arr1 = [‘green’, ‘red’, ‘blue’];
  2. $arr2 = [‘зеленый’, ‘красный’, ‘синий’];
  3. shuffle($arr1);
  4. shuffle($arr2);
  5. echo $arr1[0],» «,$arr2[0];
  6. /*
  7. test:
  8. red красный
  9. blue синий
  10. green зеленый
  11. */

Удачи!

 

Нет. Так не сработает.
Если нужен аналог задуманного вами, то можно как-то так

PHP:
  1. <?php
  2. $arr1 = [‘green’, ‘red’, ‘blue’];
  3. $arr2 = [‘зеленый’, ‘красный’, ‘синий’];
  4. $keys = range(0, count($arr1) 1 ); //array_keys() как вариант
  5. shuffle($keys);
  6.  
  7. foreach ($keys AS $value)
  8. {
  9.     echo $arr1[$value].‘ — ‘.$arr2[$value].‘<br>’;
  10. }
 

Добрый день!
Мой код работает, также как Ваш

PHP:
  1. $random = rand(0, count($arr1) 1);
  2. echo $arr1[$random]; #red
  3. echo $arr2[$random]; #красный

Я показал, пары значений, которые выдаются при перезагрузки скрипта.
Разница в том, что в Вашем коде вычисляется рандомный ключ, в моём shuffle рандомно переставляет элементы массивов,
а ключ «один и тот ключ из массивов»(см. solo27) ключ=0
Результат такой же как у Вас

PHP:
  1. echo $arr1[0]; #red
  2. echo $arr2[0]; #красный

Удачи!

 

Нет.
Хотя… ОК. Я могу предположить, что в какой-то из прошлых версий PHP перемешивание двух одинаковых по длине массивов было идентичным. Маловероятно, но возможно…
Сейчас это не будет работать 100%, алгоритм был изменен
Это легко проверить.
Песочница с выбором версий

 

проверил на PHP 8.1. Вы правы. Это не работает.
Удачи!

 

Ну, ТС, изначально, пошел по неправильному пути. Второй массив ему надо было сделать ассоциативным.

 

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

 

Зачем изобретать велосипед из говна и палок, когда существует уже готовое в ДОКУМЕНТАЦИИ ПО PHP

 

Всегда восхищался вашими категоричностью утверждений, чуждостью сомнений и радикальностью суждений.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *