webForumDet fria alternativet

Jämföra värden

5 svar · 383 visningar · startad av addeweb

addewebMedlem sedan jan. 2004216 inlägg
#1

Hej!
Jag har ett formulär med 2 grupper med lika antal checkboxar. Ena gruppen gäller ordinarie klasser och den andra gruppen vikarierande klasser. Det handlar inte om PHP-klasser, istället är det frågan om vilka träningsklasser som en instruktör har och kan markera med checkboxar. Om denne instruktör råkar markera likadan klass i båda grupperna, måste man se till att dubbletter inte används. Checkboxarna har samma värden men olika name-attribut som regcid[] och subcid[]. Om man tar emot värdena från checkboxarna och lägger in dessa i var sin array t.ex session, då kan det bli olika antal element i de två arrayerna. Det innebär också att jämförelse inte kan göras om samma klass cid-värde finns i ena arrayens första element men finns i den andra arrayens tredje element eftersom två checkboxar före den tredje i andra gruppen har markerats. Såvitt jag vet, måste två arrayer ha lika antal element för att kunna jämföras.

Finns det någon här som vet hur man kan lösa detta? Något förslag?

lunarmysMedlem sedan maj 200517 inlägg
#2

tja, enklast är väl att du kör ngt i stil med

for($x=0;$x<sizeof($regcid);$x++)
{
if (in_array($regcid[$x], $subcid) == true)
{
echo "värdet " . $regcid[$x] . " finns i båda array'erna.<br>";
}
}

addewebMedlem sedan jan. 2004216 inlägg
#3

Det kan fungera men vad händer då istället om de markerade checkboxarna i subcid-gruppen råkar vara flera än checkboxarna i regcid-gruppen? Det innebär också att subcid-arrayen kan ha flera element än regcid-arrayen. Lösningen ovan fungerar så länge regcid-arrayen har flera element än den andra arrayen. Denna lösning kan behöva kompletteras om jag har fattat rätt?

addewebMedlem sedan jan. 2004216 inlägg
#4

Det var som jag trodde. Jämföra värden genom att markera flera regcid-checkboxar än de i subcid-gruppen fungerar men inte om man markerar flera st subcid-boxar än de förstnämnda. Man får då istället en blank sida.

MatteMedlem sedan aug. 20002 975 inlägg
#5

Vill du kolla vilka värden som finns i bägge arrayerna borde det gå bra med array_intersect.

addewebMedlem sedan jan. 2004216 inlägg
#6

Har nu fått det att fungera. Tack för tipset.
Här är ett exempel som jag gjort:

// Kontrollera om användaren valt likadana klasser
if(array_intersect($_SESSION['regular']['regcid'], $_SESSION['substitute']['subcid'])){
	
		header("Location: index.php?p=update_profile&next=2&status=similar"); // Till del 2
	
}else{ // Annars inga likadana klasser och tillbaka till första sidan.			
	
		header("Location: index.php?p=profile&status=new");
	}
139 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)