Avatar billede mazrim Nybegynder
18. maj 2001 - 17:30 Der er 22 kommentarer og
1 løsning

in_array på 2.d. array ?

Vi har KÆMPE problemer med at forstå hvordan man bruger php\'s array funktioner på 2 dimensionelle arrays. Vi har flg. kode :
[kode]
$rate_show = \"SELECT ratings.l_id as rate_test FROM ratings WHERE ratings.u_id = $user\";

aabn_forbindelse_og_vaelgdb();
$rate_user = sql_spoerg_og_faa_svar($rate_show);
luk_forbindelse();

if(in_array(15, $rate_user)){
echo \"Tallet 15 findes i arrayet\";
}
if bliver IKKE evalueret korrekt da vi med mysql_abstraktioner får et array i et array !
HVORDAN får vi testet om en given værdi findes i et array, der indeholder et array ?
Hilsen
\'de fortabte\'
Avatar billede barlach Nybegynder
18. maj 2001 - 17:37 #1
hvis jeg har forstået det rigtigt...

$superArray=array($array1,array2,array3);

$i=0;
while($i<count($superArray)){
 
  if(in_array(15, $superArray[$i])){
echo \"Tallet 15 findes i arrayet\";
}


$i++;
}
Avatar billede barlach Nybegynder
18. maj 2001 - 17:41 #2
eller...

$rate_user=array($array1,array2,array3);

$i=0;
while($i<count($rate_user)){
 
  if(in_array(15, $rate_user[$i])){
print \"Tallet 15 findes i array nr\".$i;
}


$i++;
}
Avatar billede barlach Nybegynder
18. maj 2001 - 18:08 #3
..?
Avatar billede mazrim Nybegynder
18. maj 2001 - 18:16 #4
Det lyder som om du har fat i det rigtige... Tester det lige!!
Avatar billede limemedia Nybegynder
19. maj 2001 - 01:59 #5
Jeg forstår ikke helt hvor i vil hen med det spørgsmål. Hvad er det i helt konkret vil returnere ud fra hvilket datagrundlag ?

At scanne alle rækker igennem med inarray er muligt omend en sløv metode. Hvis i skriver mere om hvad det er i er ude efter tror jeg helt sikkert vi finder frem til en mere optimal løsning
Avatar billede rzj Nybegynder
19. maj 2001 - 02:31 #6
Vi er såmænd bare ude på at man skal kunne teste på om en bestemt værdi, i et array kaldet $rate_user, findes !
Ved :
print_r ($rate_user);
udskrives:
Array ( [0] => Array ( [0] => 15 [rate_test] => 15 ) [1] => Array ( [0] => 16 [rate_test] => 16 ) )
hvilket såvidt jeg kan se er et array af arrays, men hvordan sørgen tester man på e.g. tallet 15 findes ??
Avatar billede limemedia Nybegynder
19. maj 2001 - 02:41 #7
hvorfor laver i ikke dette check direkte i databasen ?
Avatar billede rzj Nybegynder
19. maj 2001 - 02:46 #8
fordi checket kører i en løkke og det vil være dumt at tilgå databasen hele tiden mens løkken kører i betragtning af at det er forholdvis få data der skal evalueres!
Avatar billede limemedia Nybegynder
19. maj 2001 - 02:46 #9
absolut...
Avatar billede limemedia Nybegynder
19. maj 2001 - 02:53 #10
men igen, det multiarray du arbejder opimod indeholder hvilke data ? der skal sammenlignes med hvad ?... hvor kommer de 15 fra ?
Avatar billede rzj Nybegynder
19. maj 2001 - 03:01 #11
jeg trækker en query ud fra databasen. her får jeg et reultat i form af en kolonne kaldet $rate_test. query\'ens resultat kommer i multiarrayet $rate_user - det eneste jeg egentligt behøver er et ganske ALMINDELIGT array uden så meget pjat, men det kan man åbenbart ikke få ved en query til databasen !
Jeg ønsker derefter at evaluere på HELE arrayet op imod en bestemt værdi for at se om denne værdi findes......snøft.....det ENESTE jeg faktisk vil er at væres istand til at sige
$l_id = 15;
if(in_array($l_id, $rate_user){
echo \"YES\";
}
MEN det kan man IKKE på et multiarray, men jeg vil IKKE ha\' et multiarray ! Er der nogen måde at pakke et multiarray ud til almindeligt array.....
jvf. tidligere kommentar, hvor jeg laver en print_r på multiarrayet - det er sgu\' da for sort ;-)
Avatar billede limemedia Nybegynder
19. maj 2001 - 03:03 #12
Er det du mener ikke \"blot\" : ?

<?php
    $res = array();
    $sql = mysql_query(\"SELECT l_id AS rate_test FROM ratings WHERE u_id=$user\");
    if (mysql_num_rows($sql)) {
        while ($foo = mysql_fetch_array($sql)) {
            $res[] = $foo[\"rate_test\"];
        }
    }
   
    if (in_array(15, $res)) {
        echo \"15 blev fundet\";
    }
?>   
Avatar billede rzj Nybegynder
19. maj 2001 - 03:09 #13
nææ for det virker ikke....
Avatar billede limemedia Nybegynder
19. maj 2001 - 03:12 #14
virker ikke som i en programmerings fejl eller hvad ?
Avatar billede limemedia Nybegynder
19. maj 2001 - 03:14 #15
har du noget kode vi må se... det gør det sikkert noget nemmere
Avatar billede rzj Nybegynder
19. maj 2001 - 03:14 #16
hvordan undgår jeg at få et array indeholdende flere arrays eller hvordan pakker jeg arrayet ($rate_user)ud i et nyt array, der kun har indholdet af værdierne i de enkelte arrays i det første array....jer er sindsyg ;-)
Avatar billede limemedia Nybegynder
19. maj 2001 - 03:15 #17
jeg kan ikke se hvorfor du i første omgang har et multidim. array når du kun selecter én værdi... at pakke et multiarray ud til et stort er ikke noget problem, men er sløvt. der må være en anden vej rundt om jeres problem
Avatar billede limemedia Nybegynder
19. maj 2001 - 03:19 #18
<?php
    $singlearray = array();
    $multiarraysize = sizeof($multiarray);
    for ($i=0;$i<$multiarraysize;$i++) {
        $singlearray = array_merge($singlearray, $multiarray[$i]);
    }
?>

burde flade jeres multidim. array $multiarray ud og ligge i $singlearray... ens værdier vil kun optræde én gang
Avatar billede limemedia Nybegynder
19. maj 2001 - 03:19 #19
og som sagt anbefaler jeg IKKE denne metode
Avatar billede rzj Nybegynder
19. maj 2001 - 03:28 #20
ok ! Her kommer det : Vi laver et rate system med login. Login - check er en cookie ($logged_in). Hvis brugeren er logget ind selectes der et location_id (l_id) for at checke hvilke steder vedkommede allerede HAR rate\'et. Den selection afgør om der skal vises et icon udfor en givet location. Hvis brugeren HAR rate\'et stedet skal der nemlig IKKE være noget icon. Vi har flere tabeller (relationelle) og derfor kan vi ikke bare hive alt data ud på én gang.
Locationerne der kan rates har et l_id ($l_id) og disse bliver extracted og skrevet ud i en løkke.
Nu ville det jo være smart hvis vi for hvergang løkken kører lige tester om $l_id == $rate_test og hvis det er så skal det IKKE være muligt at rate.....
Vi ville gøre dette med flg.

if(ISSET($logged_in)
$rate_show = \"SELECT ratings.l_id as rate_test
FROM ratings WHERE ratings.u_id = $user\";

aabn_forbindelse_og_vaelgdb();
$rate_user = sql_spoerg_og_faa_svar($rate_show);
luk_forbindelse();

##Evalueringen herunder skal kører i løkken, der udskriver locationer med $l_id.               
if(in_array($l_id, $rate_user)) {
echo \"rate_icon.gif\";
}

sql_spoerg_og_faa_svar er funktion, der gør flg:

function sql_spoerg_og_faa_svar($query) {
$resultat = mysql_query($query);
if(!$resultat) {
    udskriv_fejl(\"Kunne ikke udføre:  <em>$query</em>\");
  }

  while($raekke = mysql_fetch_array($resultat)) {
    $resultat_array[] = $raekke;
  }

  return $resultat_array;
}

nu er der da lidt kode at kigge på omend sikkert total uforståeligt !?
Avatar billede limemedia Nybegynder
19. maj 2001 - 03:37 #21
til den opgave burde mit indlæg fra
Svar fra ljweb 
19/05 2001 03:03:19 

netop virke... hvad er problemet der ?
Avatar billede rzj Nybegynder
19. maj 2001 - 03:44 #22
DER ER DET PROBLEM AT JEG IKKE HAVDE SET DET FUCKING INDLÆG - JEG TROR JEG ER LIDT SMÅ SØVNIG !!
Hvor sløvt er det - læs: er det et REELT problem ?
Avatar billede rzj Nybegynder
19. maj 2001 - 03:47 #23
iøvrigt er det vi laver en del af www.bordfodbold.dk, hvor det skal være muligt at indtaste/rate cafér/barer osv. med bordfodboldborde - ja ja der er så meget.....lige netop derfor skal det kun være muligt at rate én gang så cafér/barer osv. ikke rate\'er sig selv op !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester