как перемешать такой array

Тема в разделе "Как сделать...", создана пользователем jusuf, 30 мар 2015.

Статус темы:
Закрыта.
  1. jusuf

    jusuf Бывший модератор

    Регистр.:
    3 апр 2006
    Сообщения:
    329
    Симпатии:
    199
    как перемешать такой array?

    http://pastebin.com/KXivQj8s

    Нужна перемешать audio.
    shuffle(); - не срабатывает видно и за многомерных массивов
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.401
    Симпатии:
    1.182
    Не всё так просто с объектами:
    - можно преобразовать весь объект в массив рекурсивно;
    - можно создать дополнительный массив с перемешанными id (если внутренний аудио всегда с нуля нумеруется и +1 каждый последующий);

    1й вариант банальный и очень легко гуглится :)
    2й более интересен:

    PHP:
    $cache=simplexml_load_string($cache_content);


    $shuffle_index range(0count($cache->audio) - 1);
    shuffle($shuffle_index);

    foreach (
    $shuffle_index as $key) {
      
    print_r($cache->audio[$key]);
    }
     
    jusuf нравится это.
  3. jusuf

    jusuf Бывший модератор

    Регистр.:
    3 апр 2006
    Сообщения:
    329
    Симпатии:
    199
    вот Killdead мне и прислал первый вариант :)
    PHP:
    function object2array($object) { return @json_decode(@json_encode($object),1); }
    $cache=simplexml_load_string($cache_content);
    $cache object2array($cache);

    shuffle($cache['audio']);

    echo(
    '<pre>');
    print_r$cache);
    echo(
    '</pre>');
    Проблема решена можно закрывать тему
     
Статус темы:
Закрыта.