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
}