php ordre aléatoire d'un foreach

J'ai quelques foreach, cela pourrait bien fonctionner

foreach ($umm as $data) {
        echo '<img src="'.$data->picture.'" />';
        echo  $data->id;
}

Maintenant, je veux mélanger le foreach. J'ai essayé:

foreach (shuffle($umm) as $data) {
        echo '<img src="'.$data->picture.'" />';
        echo  $data->id;
}

ET

foreach ($umm as $data) {
        $rand_pic[] = $data->picture;
        $rand_id[] = $data->id;
}
$ran = shuffle($rand_id);
foreach($ran as $new){
    echo '<img src="'.$new->picture.'" width="100" />';
    echo $new->id;
}

Tous ces causé Warning: Invalid argument supplied for foreach() en deuxième foreach. Comment un ordre aléatoire à partir d'un foreach?

source d'informationauteur fish man