09. november 2004 - 12:57
Der er
11 kommentarer og 1 løsning
array - hjælp
Jeg har to arrays som jeg skal have lagt sammen til et . ikke noget problem... ($C=$a+$b) Problemet er et mit ene array ikke ser ud som det skal/bør. Jeg laver arrayet på flg. måde: foreach ($mailtogroup as $mailuser) { $query = ("SELECT [id] FROM telefonliste WHERE [".$mailuser."]= \"Ja\" "); $result = mssql_query($query); $array = array(); while($rows = mssql_fetch_array($result)) { array_push($array,$rows); } } og det giver følgende array: Array ( [0] => Array ( [0] => 3 [id] => 3 ) [1] => Array ( [0] => 11 [id] => 11 ) [2] => Array ( [0] => 14 [id] => 14 ) [3] => Array ( [0] => 16 [id] => 16 ) [4] => Array ( [0] => 18 [id] => 18 ) [5] => Array ( [0] => 77 [id] => 77 ) [6] => Array ( [0] => 86 [id] => 86 ) ) .. hvorfor laver den to entries i arrayet - der er nok noget jeg alligevel ikke helt har fattet mht. arrays men jeg vil have at det skal se ud som følgende: Array ( [0] => 31 [1] => 86 ) Hvad gør jeg galt???
Annonceindlæg fra Computerworld it-jobbank
09. november 2004 - 13:08
#1
... sidebemærkning... Fandt lige ud af at $C=$a+$b ikke virker helt (denoverskrive på samme pladser) så bruger istedet array_merge.. men har stadig ovenstående prob.
09. november 2004 - 13:28
#2
Når du henter med "*_fetch_array" får du to referencer til hvert felt: nummerisk (startende med 0) og feltnavn. Så du skal nok eksplicit angive feltnavnet eller referencen.
09. november 2004 - 13:29
#3
er lige ved at finde ud af om det overhovedet betyder noget at det ser ud som det gør.. Kan du forklare hvordan jeg eksplicit angiver reference eller feltnavn?
09. november 2004 - 13:35
#4
fx. $rows[0] eller $rows['id'], hvor 'id' er dit SQL feltnavn. Det kunne være at du i din SQL havde defineret "GET A+B AS 'C' ...", så ville du kunne hente $rows['C'].
09. november 2004 - 14:23
#5
Okay det funger - men kan du ikke lige hjælpe mig lidt mere... Hvorfor henter denne kun den sidste i nr. 2 forespørgelse??? require($_SERVER["DOCUMENT_ROOT"]."/function/connect_db.php"); foreach ($mailtogroup as $mailuser) { $query = ("SELECT [id], [fornavn] FROM telefonliste WHERE [".$mailuser."]= \"Ja\" "); $result = mssql_query($query); $array = array(); while($rows = mssql_fetch_array($result)) { array_push($array,$rows[0]); } } $mailarray=array_merge($array,$mailto); echo"<pre>"; print_r ($mailarray); echo"</pre>"; foreach ($mailarray as $mailuser2) { $query2 = ("SELECT [firma_email] FROM telefonliste WHERE [id] = ".$mailuser2.""); $result2 = mssql_query($query2); $array2 = array(); while($rows2 = mssql_fetch_array($result2)) { array_push($array2,$rows2[0]); } } echo"<pre>"; print_r ($array2); echo"</pre>"; Giver følgende to output: Array ( [0] => 3 [1] => 101 ) Array ( [0] => user@mail.dk ) Og jeg ved der også er en mail adresse på id nr. 3 Nogen ide om hvad jeg gør galt???????????????
09. november 2004 - 15:06
#6
Du nulstiller $array2 i hvert gennemløb af foreach($mailarray as $mailuser2). Du kan prøve at flytte $array2 = array(); op foran løkken. Du gør vist det samme i den øverste løkke, men hvis der kun er et medlem af $mailtouser, ses det ikke.
09. november 2004 - 15:16
#7
Du er da hardcore... ;O) (eller også er det mig som er mindrebeg....:O=) Må jeg spørge om 1 ting mere... Kan man gennemløbe $array2 og fjerne dubletter?
09. november 2004 - 15:19
#8
Tja, det kan man nok godt, men er det ikke lettere at fjerne dem via SQL-kaldet? $query2 = ("SELECT DISTINCT [firma_email] FROM telefonliste WHERE [id] = ".$mailuser2."");
09. november 2004 - 15:22
#9
Tjoe - hvis bare man vidste lidt mere om det hele - men det kommer vel en dag... Vil du ikke være rar at smide et svar...
09. november 2004 - 15:31
#10
Hmmm.. men det virker ikke med SELECT DISTINCT
09. november 2004 - 23:56
#11
Nå men jeg klarede den med dubletterne med array_unique så nu mangler jeg bare lige dit svar
10. november 2004 - 08:08
#12
Jeg skulle lige på arbejde... ;-)
Vi tilbyder markedets bedste kurser inden for webudvikling