aasahMedlem sedan mars 20033 451 inlägg Hoppas ni inte tröttnar på mig... :x Vad är det jag inte ser? :q
Ska inte in_array ge true om den sträng man letar efter finns i arrayen? :q Var 17 är felet?
function checkContent(&$quiz) {
$types = array("RADIO", "CHECKBOX", "SELECT", "TEXT");
//...
if ($keyQ > 0 && $keyA > 0) {
//....
}
elseif ($keyQ > 0) { //d)
$quiz[$keyQ][0][1] = strtoupper($quiz[$keyQ][0][1]);
echo "quiz[$keyQ][0][1] = ".$quiz[$keyQ][0][1]."<BR>";
if (!in_array($quiz[$keyQ][0][1], $types)) {
echo "<pre>Available types are: ";
foreach($types as $t) echo "$t ";
echo "</pre><BR>";
printParseError("Fel typ av fråga, f = $keyQ, typ = ".$quiz[$keyQ][0][1]);
}
}
//...
}
Skriver ut:
quiz[1][0][1] = RADIO
Available types are: RADIO CHECKBOX SELECT TEXT
ParseError i quizfilen: Fel typ av fråga, f = 1, typ = RADIO
Om den nu har värdet RADIO, hur kan den hamna i anropet till printParseError???
DufferMedlem sedan mars 2003409 inlägg Förstår inte riktigt vad problemet är, du har inte satt någon else alltså skriver den ju ut allt efter villkoret "elseif ($keyQ > 0)"
aasahMedlem sedan mars 20033 451 inlägg Du tittar på fel if-sats tror jag... Det är den inre:
if (!in_array($quiz[$keyQ][0][1], $types))
som inte verkar funka. Eller så är det något jättestort jag inte ser...
DufferMedlem sedan mars 2003409 inlägg ooops sorry my bad =/ tyckte jag hade sett en mer if någon stanns ;)
men då får jag ställa frågan istället, vad vill du att den ska göra/kolla
MatteMedlem sedan aug. 20002 970 inlägg Kan där finnas någon radbrytning, mellanslag eller liknande i början eller slutet av $quiz[$keyQ][0][1] ?
Någon skillnad om du gör så här ?
if (!in_array(trim($quiz[$keyQ][0][1]), $types))
DufferMedlem sedan mars 2003409 inlägg Testat att lägga in egna värden och skriva om det lite, men kan inte hitta felet dessvärre =/
Tror på det matte säger om mellanslag, in_array är ju "case sensitive" ;)
aasahMedlem sedan mars 20033 451 inlägg
Matte skrev:
Kan där finnas någon radbrytning, mellanslag eller liknande i början eller slutet av $quiz[$keyQ][0][1] ?
....
Hur funkar foreach? :q Funktionen inleds med:
function checkContent(&$quiz) {
$types = array("RADIO", "CHECKBOX", "SELECT", "TEXT");
foreach ($quiz as $keyQ => $frag) {
foreach($quiz[$keyQ] as $keyA => $alt) {
foreach($quiz[$keyQ][$keyA] as $ix => $post) {
//a
$post = trim($post);
}
//...
if ($keyQ > 0 && $keyA > 0) {
//....
}
elseif ($keyQ > 0) { //d)
$quiz[$keyQ][0][1] = strtoupper($quiz[$keyQ][0][1]);
echo "quiz[$keyQ][0][1] = ".$quiz[$keyQ][0][1]."<BR>";
if (!in_array($quiz[$keyQ][0][1], $types)) {
echo "<pre>Available types are: ";
foreach($types as $t) echo "$t ";
echo "</pre><BR>";
printParseError("Fel typ av fråga, f = $keyQ, typ = ".$quiz[$keyQ][0][1]);
}
}
//...
}}
Borde inte det betyda att $quiz inte innehåller några otrimmade värden när detta körs? Eller funkar det inte eftersom vi är mitt i två foreach ??
Förresten... försvinner radbrytningar med trim? För en radbrytning bör där finnas före trim i alla fall...
aasahMedlem sedan mars 20033 451 inlägg Borde inte dessa två tillsammans plocka bort alla blanka och varje nyradstecken i strängen??
$post = trim($post);
$post = preg_replace('/[\n\r]+/', "", $post);
Likväl är innehållet i min $post (betydligt längre ner) "RADIO" att se till men med längd 9!!! Och efter en del fundering har jag kommit fram till att det nog kan ligga två "nyrad" före och två efter...
Hur blir jag av med dem? :q
MatteMedlem sedan aug. 20002 970 inlägg Är det för jämförelsens skull så kan du göra som jag föreslog.
Annars är det nog bättre att ge sig på källan, alltså där du byggde upp arrayen.
Du lägger en trimmad variabel i arrayen $post, men sedan använder du aldrig variabeln.
Du borde kunna göra så att du ändrar:
[PHP]// Ändra
$quiz[$keyQ][0][1] = strtoupper($quiz[$keyQ][0][1]);
// Till
$quiz[$keyQ][0][1] = trim(strtoupper($quiz[$keyQ][0][1]));
aasahMedlem sedan mars 20033 451 inlägg Åh! Tusen tack, Matte!
Jag begrep först här och nu att de värden vi når via variablerna i en foreach-slinga också är kopierade värden. :r Naturligtvis! Nå, den här läxan dröjer det nog innan jag glömmer!