Portal > Foren > PHP > PHP-Programmierung > Keys eines assoziativen Arrays nummerieren
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 07.09.2007, 19:53 Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 289
Standard Keys eines assoziativen Arrays nummerieren

Hallo miteinander,

Ja ich weiß ich kann mit jeder x-beliebigen DB Klasse den fetchmode umstellen.
Allerdings müssen die Daten in so einer Art Datagrid aufgelistet werden und da benutze ich lieber IDs je Spalte da durch eine Methode auch benutzerdef. Spaltennamen verwendet werden und es dadurch keine Verwechslung gibt. Also ich will das mit dem fetch nicht hören! Derzeit mache ich das so:

PHP-Code:
        foreach ($data as $key => $row) {
            
$cellkey 0;
            foreach (
$row as $content) {
                
$tabledata[$key][$cellkey++] = $content;
            }
        } 
Geht das vielleicht ein wenig effizienter?
ex³ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.09.2007, 20:18 Nach oben    #2
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 867
Standard

Seit PHP 5 müsste das hier gehen:

PHP-Code:
<?php

foreach ($data as $key => &$row)
    
$row array_values($row);
Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.09.2007, 23:20 Nach oben    #3
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 289
Standard

ja stimmt mit array_values ich habs jetzt so:

PHP-Code:
        foreach ($tabledata as $key => $row) {
            
$tabledata[$key] = array_values($row);
        } 
Für was in deinem Codeschnippsel das & vor row? Was soll das in diesem Fall bewirken?
ex³ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.09.2007, 00:34 Nach oben    #4
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 867
Standard

Referenz anstatt Kopie.

http://php.net/manual/en/control-structures.foreach.php

Die zwei Zeilen machen genau, was du möchtest (und vermutlich schneller und speicherschonender:(
PHP-Code:
<?php

$aSrc 
= array(
    
'key1' => array('id' => 10'name' => 'Paul'),
    
'key2' => array('id' => 12'name' => 'Andrea'),
    
'key3' => array('id' => 13'name' => 'Gerda')
);

$aDst = array(
    
'key1' => array(=> 10=> 'Paul'),
    
'key2' => array(=> 12=> 'Andrea'),
    
'key3' => array(=> 13=> 'Gerda')
);

foreach (
$aSrc as $key => &$row)
    
$row array_values($row);

print (
$aSrc === $aDst) ? 'success' 'test failed';
Basti

Geändert von Basti (08.09.2007 um 00:45 Uhr)
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.09.2007, 01:14 Nach oben    #5
Erfahrener Benutzer
 
Registriert seit: 12.06.2006
Beiträge: 208
Standard

Ich meine im Hinterkopf zu haben, dass die assoziativen Arrays automatisch auch per Nummern ansprechbar sind .. stimmt das?
FloB ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.09.2007, 08:59 Nach oben    #6
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 289
Standard

Basti, verstehe ich das richtig: Wenn ich oben &$row mache dann werden durch die Zeile $row = array_values($row); die inneren Arrays im $tabledata Array geändert? $row zeigt dann auf das jeweils durchlaufene $tabledata Array, statt eine eigene Kopie zu sein?
ex³ ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.09.2007, 17:06 Nach oben    #7
Jonas
 
Benutzerbild von Artemis
 
Registriert seit: 03.06.2006
Beiträge: 254
Standard

@ex³: Korrekt.
__________________
Applikations-Programmierung:
BlitzMax, BlitzPlus

Webentwicklung:
PHP, (X)HTML, CSS, JavaScript, MySQL


Artemis ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.09.2007, 17:56 Nach oben    #8
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 707
Standard

Dennoch ist es nicht das, was er haben will. Er möchte ien Array (assoziativ) mit den Namen der Felder haben und jedes Element dieses Arrays mit dem Feldnamen soll dann numerisch alle Daten dieses Feldes (bzw. alelr Datensätze, die ausgelesen werden) enthalten. Das ist NICHT das, was array_values() daraus macht ^^

Mir persönlich fällt aber leider gerade keine andere Möglichkeit ein, die effizienter arbeiten könnte. Es würde gehen, könnte man die Datenbank-Ergebnisse nicht Zeilen, sondern Spaltenweise auswerten...
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.09.2007, 18:22 Nach oben    #9
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 867
Standard

Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
Dennoch ist es nicht das, was er haben will. Er möchte ien Array (assoziativ) mit den Namen der Felder haben und jedes Element dieses Arrays mit dem Feldnamen soll dann numerisch alle Daten dieses Feldes (bzw. alelr Datensätze, die ausgelesen werden) enthalten. Das ist NICHT das, was array_values() daraus macht ^^
Ich verstehe nicht. Schau dir meinen Test an, schau dir das Ergebnis des Tests an und lass auch mal den Code im Ausgangsposting durch den Test laufen. Passt doch alles. array_values() macht quasi aus einem assoziativen Array ein numerisch indiziertes (bzw. gibt eben ein solches zurück).

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.09.2007, 18:28 Nach oben    #10
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 707
Standard

Ach, Mist, mein Fehler. Ich hatte das Ausgangs-Script falsch "geparsed", das passiert halt, wenn man mehrere Threads gleichzeitig liest... Verzeihung
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Arrays pixel Allgemeine Java-Programmierung 9 07.05.2005 16:29
Mehrdimensionale Arrays Quakes Allgemeine Java-Programmierung 8 17.04.2005 14:44
[PHP] Was sind eigentlich Arrays? Ben Tutorials 5 09.12.2004 09:29


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45