php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.04.2005, 13:01  
Neuer Benutzer
 
Registriert seit: 01.01.2005
Beiträge: 16
phpwiki
Standard assoziatives array - wahlfreier zugriff oder umassoziieren?

Ich habe es dank freundlicher hilfe hier geschafft, das ergebnis meines sql-queries in ein assoziatives array zu packen, a la

COUNTER ID NACHNAME VORNAME STUNDEN
1 9 peter pan 12
2 2 paul panther 19
3 12 theo tiger 22


Will ich den Voramen von $authors['COUNTER']=1, kann ich den mit
Code:
echo $all_authors[1]['VORNAME']
ansprechen.

Gibt es eine Möglichkeit, eine Zeile auch anhand anderer Elemente anzusprechen, also beispielsweise die Daten des Eintrags mit NACHNAME=Peter direkt anzusprechen?

Bisher sieht meine Lösung dafür so aus, daß ich das komplette Array in ein neues, am gewünschten Eintrag assoziertes Array dupliziere, ich kann mir aber nicht vorstellen, daß das nicht einfacher geht:

folgender Code funktioniert, ich halte das aber für krank und würde mich über über eine elegantere Lösung freuen!

Code:
foreach (array_keys($all_authors_old) as $key)
       {
       //array $all_authors_old nach $all_authors_new, dabei counter raus
und an Author_ID assoziieren    

$all_authors_new[$all_authors_old[$key]['ID']]['VORNAME'] = $all_authors_old[$key]['VORNAME'];
$all_authors_new[$all_authors_old[$key]['ID']]['NACHNAME'] = $all_authors_old[$key]['NACHNAME']; 
$all_authors_new[$all_authors_old[$key]['ID']]['SHORTNAME'] = $all_authors_old[$key]['SHORTNAME'];

       }
bin für jeden hint dankbar!

tom
phpwiki ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.04.2005, 13:17  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Ich versteh zwar nicht, was du willst, aber das ganze sieht so nach "von hinten durch die Brust ins Auge" aus. Warum holst du dir die gewünschten Daten nicht direkt aus der Datenbank, statt hier x-fache Arrays umzukopieren. Die ist für so Dinge ausgelegt.
__________________
Gruss
L
lazydog ist offline  
Alt 25.04.2005, 13:37  
Neuer Benutzer
 
Registriert seit: 01.01.2005
Beiträge: 16
phpwiki
Standard

Die DB pfeifft eh aus dem letzten Loch - ich möchte ja eben vermeiden, daß ein fast identischer Query doppelt abgesetzt wird.

Mein Webserver hat im Gegensatz zur DB genügend Resourcen frei. Das beschriebene Konstrukt funktioniert - ich finde die Lösung nur sehr unelegant.

tom
phpwiki ist offline  
Alt 25.04.2005, 14:00  
Gast
 
Beiträge: n/a
Standard

Mit dem Umkopieren bewirkts du, dass du anstatt über den key 'counter' über den key 'id' auf deine Werte zugreifen kannst. Wie du sagst, ist das ein wenig umständlich.
Brauchst du zwingend die keys counter und id für deine Tabelle? Wenn beide als Primärschlüssel dienen können, kannst du auf einen dieser keys verzichten und die Umkopiererei entfällt.

Gruß
 
Alt 25.04.2005, 14:22  
Neuer Benutzer
 
Registriert seit: 01.01.2005
Beiträge: 16
phpwiki
Standard

Ich brauche zwingend zwei verschiedene Keys, ja - genau deshalb mache ich ja die Umkopiererei: Ich will erst auf die Daten von dbo.AUTHOR.ID=x zugreifen und brauche später die Daten von dbo.AUTHOR.NAME=PETER.

Die einfachste Lösung ist sicher ein zweimaliger Zugriff auf die Datenbank oder auich nur das Datenbankobjekt - das möchte ich allerdings vermeiden, da die Datenbank unter mehreren Webapplikationen schon jetzt ächzt und ich alle Querys in Funktionen verpackt habe, die eben in diesem Fall ein assoziatives Array zurückliefern.

Ich möchte von den Standardfunktionen für Querys nicht abrücken, weil ich sonst in 3 Wochen meinen eigenen Code nicht mehr verstehe - dann lieber die beschriebene Krückenlösung, die mir zwar nicht gefällt, aber derzeit auch mit einigen tausend Datensätzen prima läuft.

ts
phpwiki ist offline  
Alt 25.04.2005, 14:56  
Gast
 
Beiträge: n/a
Standard

Hmmm, so auf Anhieb fällt mir folgendes ein:
Du könntest während des Einlesens aus der DB und des Schreibens in dein ass. Array noch ein zweites Array mitlaufen lassen, das etwa so aussieht: id2count [id] = count
liefert also zu jeder id das entsprechende count.
Wenn du dein array über count aufrufen willst, machst du es wie gehabt:
$all_authors[1]['VORNAME']
, wenn du es über id aufrufen willst, dann:
$all_authors[(id2count[id])]['VORNAME']

Wenns so funzt, spart es die Umkopiererei und ein wenig Platz.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
Sortieralgo: Plötzlich keinen Zugriff mehr auf Daten Melchior PHP-Fortgeschrittene 8 19.09.2006 23:50
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Assoziatives Array mit String initialisieren PHP Tipps 2006 10 17.01.2006 14:01
assoziatives Array aus Datei PHP Tipps 2005-2 2 20.10.2005 19:21
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Assoziatives Array auslesen phpwiki PHP Tipps 2005 4 21.04.2005 13:27
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25
assoziatives Array aus 2 Spalten aus Mysql-Tabelle PHP Tipps 2004 2 14.06.2004 13:46

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php wahlfreier zugriff, php zugriff auf assoziatives array, http://www.php.de/php-tipps-2005/21907-assoziatives-array-wahlfreier-zugriff-oder-umassoziieren.html

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.