За последние 24 часа нас посетили 73175 программистов и 10221 робот. Сейчас ищет 2971 программист ...

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

Тема в разделе "PHP для новичков", создана пользователем solo27, 4 окт 2023.

Метки:
  1. solo27

    solo27 Новичок

    С нами с:
    3 окт 2023
    Сообщения:
    3
    Симпатии:
    0
    Я хочу перемешивать элементы массивов и получить одинаковые значения с помощью рандом, но в этом случае 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.

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

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    и где тут рандом?
     
  3. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.513
    Симпатии:
    284
    Код (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]; #красный
     
  4. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Добрый день!
    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. */
    Удачи!
     
  5. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.513
    Симпатии:
    284
    Нет. Так не сработает.
    Если нужен аналог задуманного вами, то можно как-то так
    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. }
     
  6. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    Добрый день!
    Мой код работает, также как Ваш
    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]; #красный
    Удачи!
     
  7. Drunkenmunky

    Drunkenmunky Старожил

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

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    485
    Симпатии:
    97
    Адрес:
    Бавария, Германия
    проверил на PHP 8.1. Вы правы. Это не работает.
    Удачи!
     
  9. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.513
    Симпатии:
    284
    Ну, ТС, изначально, пошел по неправильному пути. Второй массив ему надо было сделать ассоциативным.
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.843
    Симпатии:
    1.338
    Адрес:
    Лень
  11. Drunkenmunky

    Drunkenmunky Старожил

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

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.843
    Симпатии:
    1.338
    Адрес:
    Лень
    Зачем изобретать велосипед из говна и палок, когда существует уже готовое в ДОКУМЕНТАЦИИ ПО PHP
     
  13. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.513
    Симпатии:
    284
    Всегда восхищался вашими категоричностью утверждений, чуждостью сомнений и радикальностью суждений.