[PHP] two-dimensional PHP array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 18-07 10:58
Het is misschieen n00b vraag en ik vind het ook niet leuk dat ik er niet uit kom
maar ik heb toch een vraag over arrays.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
    $arr_menu = array(array('name'=>'Home', 'url'=>'http://server/cjm/'));
    
    $query1 = "SELECT appid FROM userapp WHERE userid = '$int_id'"; 
    $result = mysql_query($query1) or die('user_menu1: '.mysql_error());            
    while($obj_app = mysql_fetch_object($result)) {
        $int_id = $obj_app->appid;
        $query2  = "SELECT * FROM app WHERE id = '$int_id'";
        $result2 = mysql_query($query2) or die('user_menu2: '.mysql_error());
        $obj_app2 = mysql_fetch_object($result2);
        
        $arr_menu .= array('name'=>$obj_app2->name, 'url'=>$obj_app2->url);
    }

Ik heb een array waarin het eerste element vastligt en de rest komt uit een db.
Maar die uit de db plakt hij er niet aan vast. Volgens mij werkt .= niet.
Het is dus een array met menuitems en deze items bevatten een array object.
Hierin ligt de naam en de URL vast.
Ik hoop dat er mensen zijn die dit weten. Of een slimmere aanpak weten. Alvast bedankt.

Twitter @cmeerbeek / Halo Waypoint Profile


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Probeer eens
PHP:
1
$arr_menu[] = ...

Acties:
  • 0 Henk 'm!

  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 18-07 10:58
X-Lars schreef op maandag 11 april 2005 @ 14:10:
Probeer eens
PHP:
1
$arr_menu[] = ...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    $arr_menu = array();
    $arr_menu[1] = array('name'=>'Home', 'url'=>'http://kwek/cjm/');
    
    $query1 = "SELECT appid FROM userapp WHERE userid = '$int_id'"; 
    $result = mysql_query($query1) or die('user_menu1: '.mysql_error());            
    $i = 2;
    while($obj_app = mysql_fetch_object($result)) {
        $int_id = $obj_app->appid;
        $query2  = "SELECT * FROM app WHERE id = '$int_id'";
        $result2 = mysql_query($query2) or die('user_menu2: '.mysql_error());
        $obj_app2 = mysql_fetch_object($result2);
        
        $arr_menu[$i] = array('name'=>$obj_app2->name, 'url'=>$obj_app2->url);
        $i++;
    }


Dit bedoel je? Heb ik ook al geprobeerd.
De array krijgt een grote van 1 maar de waarden erin blijven leeg. Heel raar.

Twitter @cmeerbeek / Halo Waypoint Profile


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Kan je met een array_push niet een hele array toevoegen?

edit: gaat snel, array_push en array[] doen bijna hetzelfde of niet?

[ Voor 40% gewijzigd door Zoolander op 11-04-2005 14:18 ]

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Laat die $i eens gewoon weg. Regel 13 wordt:
PHP:
13
$arr_menu[] = array('name'=>$obj_app2->name, 'url'=>$obj_app2->url);

De . operator is bedoeld voor string concatenation, daar heb je bij arrays niets aan. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Je kan ook gewoon zonder een key op te geven iets aan een array toevoegen; dit werkt gewoon:
PHP:
1
2
3
4
<?php
$array = array(1,2,3);
$array[] = array(4,5,6);
?>

Geeft een array met een subarray als vierde waarde.

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-09 12:54
Waarom .= voor je array?

In de documentatie kun je terug vinden dat je nieuwe elementen kunt toevoegen door gebruik te maken van [], of eventueel van 1 van de functie's. Je krijgt dan zoiets:
PHP:
1
$arr_menu[] = array('name'=>$obj_app2->name, 'url'=>$obj_app2->url);


edit:
traag

[ Voor 23% gewijzigd door Sybr_E-N op 11-04-2005 14:22 ]


Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Beetje offtopic misschien, maar je kan je SQL query beter opstellen met een JOIN erin ipv een heleboel losse queries uit te voeren. Dat zal vele malen sneller zijn en je belast je SQL server minder. Voorbeeldje:
code:
1
SELECT * FROM userapp AS userapp LEFT JOIN app AS app ON userapp.userid = app.id WHERE userapp.userid = '$int_id'

(ongetest, en mijn SQL kennis is wat weggezakt, maar hier mee moet je toch wel een eind op weg komen)

Verder, array nummeringen beginnen normaal bij 0 (net als vele andere nummeringen in code), dat kan jij dus ook beter doen.

Acties:
  • 0 Henk 'm!

  • Bbfreak
  • Registratie: September 2002
  • Laatst online: 18-07 10:58
-NMe- schreef op maandag 11 april 2005 @ 14:16:
Laat die $i eens gewoon weg. Regel 13 wordt:
PHP:
13
$arr_menu[] = array('name'=>$obj_app2->name, 'url'=>$obj_app2->url);

De . operator is bedoeld voor string concatenation, daar heb je bij arrays niets aan. :)
Mijn dank is groot. Het werkt. We kunnen allemaal weer verder met werken op GoT :)

Twitter @cmeerbeek / Halo Waypoint Profile

Pagina: 1