rand() повторяет одно и то же число

у меня есть код

$arr = [
[
'str_a' => 'А',
'str_a1' => 'А1',
'str_a2' => 'А2',
'str_a3' => 'А3',
'str_a4' => 'А4',
'str_a5' => 'А5',
],
[
'str_a' => 'А',
'str_a1' => 'А1',
'str_a2' => 'А2',
'str_a3' => 'А3',
'str_a4' => 'А4',
'str_a5' => 'А5',
]
];


$random = rand(1,5);

foreach($arr as $val) {
    shuffle($arr);
    echo $val['str_a'];
    echo $val['str_a'.$random];
    echo $val['str_a'.$random];
}

Как сделать так чтобы рандом не выдал тот же число?

Пробовал так но он повторяет одиноковые число.

    echo $val['str_a'];
    echo $val['str_a'.rand(1,5)];
    echo $val['str_a'.rand(1,5)];

Если в первом строке получил число 2, я хочу не повторять это число во втором строке.


Ответы (1 шт):

Автор решения: TemirStack

Можно использовать array_pop — извлекает последний элемент массива

foreach($arr as $val) {
    $min = 1; $arNum = [];
    $max = count($val)-1; // 5
    while ($min <= $max) $arNum[] = $min++;
    shuffle($arNum); // [1,5,3,4,2]
    echo $val['str_a'];
    echo $val['str_a'.array_pop($arNum)]; // 2
    echo $val['str_a'.array_pop($arNum)]; // 4
}
→ Ссылка