webForumDet fria alternativet

Random array, får ej vara samma två i rad?

PHPur PHP

3 svar · 468 visningar · startad av UrMe

Medlem sedan apr. 2001762 inlägg
Frågan#1

Jag skapar 10 array så här:

function shuffle_assoc(&$array) {
	if (count($array)>1) {
	  $keys = array_rand($array, count($array));

	  foreach($keys as $key)
		$new[$key] = $array[$key];

	  $array = $new;
	}
	return true;
}

foreach($result as $row) {
$array = array(1 => "test1", 2 => "test2", 3 => "test3");
shuffle_assoc($array);
.... mer kod som spottar ut arrayen här.....
}

Kan jag få så föregående array inte slumpar på samma sätt?

T.ex om första array slumpas så här:
(test2, test1, test3)
Så vill jag inte att nästa arrays värden ska hamna på samma positioner.
T.ex måste nästa array se ut så här:
(test3, test2, test1)

Går detta att lösa på något sätt? kommer inte på hur :r

Medlem sedan apr. 2006409 inlägg
#2

1. Är alla arrayer lika långa?
2. Finns det flera värden än nycklar?

Gör en funktion som ändrar på värdet... kanske.

function differ_arrays($array1, $array2)
{
	foreach ($arr1 as $key => $val) {
		if (!array_key_exists($key, $arr2)) {
		return null; // null - inget resultat
	} elseif ($val == $arr2[$key]) {
		//sätt nytt värde, som du vill ha
        }
    }
}
Medlem sedan juni 20014 421 inlägg
Medlem sedan apr. 2001762 inlägg
#4

Ska kolla på det där, alla arrayer är lika långa. Tackar!

127 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)