php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.02.2012, 11:05  
archer42
Gast
 
Beiträge: n/a
Standard array umdefinieren

Hallo,
ich habe folgenden Code:
PHP-Code:
        $columns = array();
        
$columns[] = array('name' => 'ID''orderByColumn' => 'id''orderByDirection' => 'asc');
        
$columns[] = array('name' => 'Nachname''orderByColumn' => 'lastName''orderByDirection' => 'asc');
        
$columns[] = array('name' => 'Vorname''orderByColumn' => 'firstName''orderByDirection' => 'asc');
        
$columns[] = array('name' => 'Geb.''orderByColumn' => 'birth''orderByDirection' => 'asc');
        
$columns[] = array('name' => 'Straße''orderByColumn' => 'street''orderByDirection' => 'asc');
        
$columns[] = array('name' => 'Nr.''orderByColumn' => 'nr''orderByDirection' => 'asc');
        
$columns[] = array('name' => 'PLZ''orderByColumn' => 'zipCode''orderByDirection' => 'asc');
        
$columns[] = array('name' => 'Email''orderByColumn' => 'email''orderByDirection' => 'asc');
        
$columns[] = array('name' => 'Telefon''orderByColumn' => 'phone''orderByDirection' => 'asc');
        
$columns[] = array('name' => 'Mobil''orderByColumn' => 'mobile''orderByDirection' => 'asc');

        foreach (
$columns as $column) {
            if (
$orderByColumn == $column['orderByColumn']) {
                if (
'asc' == $column['orderByDirection']) {
                    
$column['orderByDirection'] = 'desc';
                } else {
                    
$column['orderByDirection'] = 'asc';
                }
            }
        } 
Nun möchte ich,
PHP-Code:
$column['orderByDirection'
einen neuen Wert zuweisen.

Wenn ich mir das array mit var_dump in der foreach schleife anzeigen lasse, dann stimmt das auch. Aber dies geht nach der foreach schleife irgendwie wieder verloren, also var_dump zeigt wieder nur die standard werte (asc) an....

Was mache ich falsch?
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.02.2012, 11:11  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

du musst innerhalb foreach mit einer Referenz arbeiten:
PHP-Code:
$array = array('a'=> 'foo');

foreach ( 
$array as $item ) {
   
$item 'bar';
}

echo 
$array['a']; // 'foo'

foreach ( $array as &$item ) {
   
$item 'bar';
}

echo 
$array['a']; // 'bar' 
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 02.02.2012, 11:27  
archer42
Gast
 
Beiträge: n/a
Standard

PHP-Code:
        foreach ($columns as &$column) {
            if (
$orderByColumn == $column['orderByColumn']) {
                if (
'desc' == $column['orderByDirection']) {
                    
$column['orderByDirection'] = 'asc';
                } elseif (
'asc' == $column['orderByDirection']) {
                    
$column['orderByDirection'] = 'desc';
                } else {
                    
$column['orderByDirection'] = 'asc';
                }
            }
        } 
nun kann ich von asc auf desc schalten aber nicht von desc auf asc wie kann das sein?
  Mit Zitat antworten
Alt 02.02.2012, 11:34  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

PHP-Code:
$directions = array('asc','desc');

foreach (
$columns as &$column) {
   if (
$orderByColumn == $column['orderByColumn']) {
      
$currentDir $column['orderByDirection'];
      
$myDirection $directions;
      if ( 
in_array($column['orderByDirection'], $directions) ) {
         unset(
$myDirectionarray_search($column['orderByDirection']) ]);
         
$column['oderByDirection'] = join($mydirection);
      } else 
$column['oderByDirection'] = $mydirection[0];
   }

Toggle-Mechanismus.

Alternativ die Kurzform:

PHP-Code:
$d = array('asc','desc');
array_walk($columns, function ( &$i ) use ( $d ) {
   
$i['orderByDirection'] = ( $o array_search($i['orderByDirection']), $d) ) === false
      
$d[ ( count($d) - ) - $o 
      : 
$d[0];
}); 
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.

Geändert von tr0y (02.02.2012 um 14:13 Uhr). Grund: Toggle-Algo Kurzform angefügt.
tr0y ist offline   Mit Zitat antworten
Antwort


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
[Erledigt] Array das mit array_count_values erzeugt wurde wieder umwandeln ProCoder2025 PHP Einsteiger 11 16.01.2012 11:08
Rekursive Liste erstellen sponge93 PHP Einsteiger 3 20.12.2011 09:21
Array werte zusammen rechnen fabi288 PHP Einsteiger 13 03.01.2011 16:08
mehrdimensionales array inhalte tauschen pidaman PHP Tipps 2010 18 27.08.2010 16:58
Suche in Text-Datenbank ein Array und lösche es - Lösung UdoDirk PHP Tipps 2010 2 18.07.2010 08:27
[Erledigt] Sortierung mehrerer Arrays philosapiens PHP Tipps 2010 16 08.06.2010 05:22
PHPLot von der Datenbank zum mehrdimensionalen Array mannimammut PHP Tipps 2009 1 15.12.2009 10:40
Array umwandeln von zwei zu mehrdimensional erselbst PHP Tipps 2009 6 02.04.2009 23:30
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
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
[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


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:48 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