sofiyavv06
Новичок
Есть рабочий код, но преподаватель считает, что это можно сделать легче: "слишком сложно перемешиваете массив, там нужно просто сделать shuffle($result3['books']);
И лучше алгоритм работы делать так:
printBooks
shuffle
printBooks
Так код будет более прозрачным и понятным, вообще добавление в функции параметра, который меняет логику функции не самая хорошая идея"
как должен выглядеть код согласно правкам? заранее спасибо
	
	
	
		
								И лучше алгоритм работы делать так:
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);
} 
	            
