как и иначе перемешать массив?

sofiyavv06

Новичок
Есть рабочий код, но преподаватель считает, что это можно сделать легче: "слишком сложно перемешиваете массив, там нужно просто сделать shuffle($result3['books']);

И лучше алгоритм работы делать так:

printBooks

shuffle

printBooks

Так код будет более прозрачным и понятным, вообще добавление в функции параметра, который меняет логику функции не самая хорошая идея"

как должен выглядеть код согласно правкам? заранее спасибо

PHP:
<pre
<?php

$result3 = [
    'The old man and the sea' => [
        'fio' => 'Ernst Hemingway',
        'email' => '[email protected]',
        'birthYear' => '1899',
    ],
    'La Nausée' => [
        'fio' => 'Jean Paul Sartre',
        'email' => '[email protected]',
        'birthYear' => '1905',
    ],
    'The Moonstone' => [
        'fio' => 'Wilkie Collins',
        'email' => '[email protected]',
        'birthYear' => '1824',
    ]
];
 
printBook($result3);
echo '<hr>';
printBook($result3, true);
 
 
function printBook(array $result3, bool $shuffle = false): void
{
    ! $shuffle ?: $result3 = shuffleAssoc($result3);
    foreach ($result3 as $book => $data) {
        echo "Book <b>$book</b>, was written by <b>{$data['fio']}</b> <b>{$data['birthYear']}</b> (<b>{$data['email']}</b>)<br>";
    }
}
 
function shuffleAssoc(array $result3): array
{
    $keys = array_keys($result3);
    shuffle($keys);
    return array_merge(array_flip($keys), $result3);
}
 

Фанат

oncle terrible
Команда форума
выглядт так что препод-дурак, но смущает что в $result3 нет элемента 'books'
что мы здесь не видим?
 

Фанат

oncle terrible
Команда форума
а понял. препод имел в виду не оригинальную shuffle, а
shuffleAssoc
и тут я сним согласен
 

AnrDaemon

Продвинутый новичок
@Фанат , имелось в виду именно то, что имелось. А имелось в виду - в принципе убрать вызов shuffleAssoc из printBook.
 
Сверху