За последние 24 часа нас посетили 17629 программистов и 1611 роботов. Сейчас ищут 2025 программистов ...

Не могу понять как работает array_rand

Тема в разделе "PHP для новичков", создана пользователем Fyntik, 26 янв 2021.

Метки:
  1. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.492
    Симпатии:
    281
    Проясняется.
    То есть случайный скрипт, считывает один случайный текстовый документ?
    Это не нужно разбивать.
    В одном элементе массива содержится один путь к случайному скрипту.
    Запуская print_r вы просто выводите неотформатированное представление массива.
     
  2. Fyntik

    Fyntik Новичок

    С нами с:
    5 июн 2020
    Сообщения:
    38
    Симпатии:
    0
    Да, один случайный не текстовый документ а файл php
    --- Добавлено ---
    если я вывожу
    include($slice[0]);
    include($slice[1]);
    Выводится только один файл, а почему не понятно
     
  3. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.492
    Симпатии:
    281
    Ладно, сдаюсь.
    Извините, не смогу помочь. Не понимаю что вы хотите сделать.
    Возможно как-то влияет содержимое этих скриптов.
    Попробуйте сформулировать задачу заново.
    Своими словами. С примерами постов.
     
  4. Fyntik

    Fyntik Новичок

    С нами с:
    5 июн 2020
    Сообщения:
    38
    Симпатии:
    0
    Смотрите, у нас есть один посты, который содержит в себе массив:
    Код (Text):
    1. array('category1' => $postCategory1, 'category2' => $postCategory2, 'category3' => $postCategory3, 'category4' => $postCategory4, 'name' => $postName, 'subtitle' => $postSubtitle, 'title' => $postTitle, 'date' => $postDate);
    Эти данные берутся из файла в каталоге posts/какой-тофайл.php
    И мне нужно вывести 2 случайных файла через include
    Сам скрипт:

    Код (Text):
    1.  $phpFiles = glob('posts/*.php');
    2.                                     shuffle($phpFiles);
    3.                                     $slice = array_slice ($phpFiles, -2);
    Вызывает массив который мне нужен, где $slice[0] это один файл, а $slice[1] это другой
    Но проблема сейчас заключается в следующем, при выводе через include($slice[0]); include($slice[1]); выводится лишь один файл, а нужно чтобы выводилось оба, как и есть в массиве
     
  5. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.492
    Симпатии:
    281
    Понятно.
    То есть оба файла содержат одинаковые массивы, с одинаковыми ключами, но разными значениями.
    И второй, просто накладывается на первый.
    Это примерно как
    Код (Text):
    1. $var = 1;
    2. $var = 2;
    3.  
    4. echo $var; // выведет 2
     
  6. Fyntik

    Fyntik Новичок

    С нами с:
    5 июн 2020
    Сообщения:
    38
    Симпатии:
    0
    $var = $slice[0];
    $var = $slice[1];
    include($var);
    ?
    --- Добавлено ---
    так, это мы выяснили, а как их разбить чтобы выводило сразу оба?
     
  7. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.492
    Симпатии:
    281
    Чтобы ваш код заработал как вы хотите нужно сделать примерно так
    Код (Text):
    1.  
    2. $var = 1;
    3. echo $var; // выведет 1
    4. $var = 2;
    5. echo $var; // выведет 2
     
  8. Fyntik

    Fyntik Новичок

    С нами с:
    5 июн 2020
    Сообщения:
    38
    Симпатии:
    0
    Код (Text):
    1. $slice = array_slice ($phpFiles, -1);
    2.                                     include($slice[0]);
    3.                                     $sliceone = array_slice ($phpFiles, -2);
    4.                                     include($sliceone[1]);
    ?
     
  9. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.492
    Симпатии:
    281
    PHP:
    1.    
    2. $sliceone = array_slice ($phpFiles, -2);
    3. include($sliceone[0]);
    4.    //здесь обработка массива из $sliceone[0]
    5. include($sliceone[1]);
    6.    //здесь обработка массива из $sliceone[1]
     
    #34 Drunkenmunky, 26 янв 2021
    Последнее редактирование: 26 янв 2021
    Fyntik нравится это.
  10. Fyntik

    Fyntik Новичок

    С нами с:
    5 июн 2020
    Сообщения:
    38
    Симпатии:
    0
    не работает
    --- Добавлено ---
    выводи один всё так же
     
  11. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.492
    Симпатии:
    281
    Давайте примерные файлы с массивами.
    Штуки три.
     
  12. Fyntik

    Fyntik Новичок

    С нами с:
    5 июн 2020
    Сообщения:
    38
    Симпатии:
    0
    1.

    Код (Text):
    1. <?php
    2. $postCategory1='';
    3. $postCategory2='';
    4. $postCategory3='';
    5. $postCategory4='';
    6. $postName='1111';
    7. $postSubtitle='![](Сссылка на обложку скобки и &#039;![]&#039; не трогать)';
    8. $postTitle='123';
    9. $postContent='123';
    10. $postDate=1611660591;
    11. ?>
    Остальные идинтичные только postName postTitle и postContent отличается, другие цифры
    --- Добавлено ---
    В общем решил проблему тем что создал два одинаковых скрипта в одном файле, спасибо за помощь!
     
  13. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.492
    Симпатии:
    281
    PHP:
    1. <?php                              
    2. $phpFiles = glob('posts/*.php');          
    3. shuffle($phpFiles);                
    4. $slice = array_slice ($phpFiles, -2);
    5. echo '<pre>';                      
    6.                                    
    7. foreach($slice as $value)          
    8. {                                  
    9. include $value;                    
    10. echo $postCategory1;                
    11. echo $postCategory2.'<br>';        
    12. echo $postCategory3.'<br>';        
    13. echo $postCategory4.'<br>';        
    14. echo $postName.'<br>';              
    15. echo $postSubtitle.'<br>';          
    16. echo $postTitle.'<br>';            
    17. echo $postContent.'<br>';          
    18. echo $postDate.'<br>';              
    19. echo '<br>';                        
    20. }                                  
    21.                                    
    22. ?>
     
    Fyntik нравится это.