ilch Forum » Allgemein » HTML, PHP, SQL,... » array_combine alternative für PHP4?

Geschlossen
  1. #1
    User Pic
    Ahrtas Moderator
    Registriert seit
    17.12.2007
    Beiträge
    2.368
    Beitragswertungen
    210 Beitragspunkte
    Also in meinem WoW Rekrutierungs-System für ilch nutze ich array_combine um zwei verschiedene Arrays zu generieren die ich dann im Script weiterverwende.

    Da array_combine erst ab PHP 5.x möglich ist suche ich eine Alternative für ältere PHP-Versionen da noch nicht jeder auf PHP 5 umgestiegen ist.

    Die betroffenen Zeilen sind 29-39. In diesen Zeilen werden Name und ID sowie Icon und ID geordnet und separat in ein Array gespeichert.

    Hat da jemand einen Rat für mich? lächeln

    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.606
    Beitragswertungen
    117 Beitragspunkte
    also ich persönlich würde sagen die müssen dann einfach ein php update machen ...

    also php 5.3 sollte meiner persönlichen Meinung nach schon Standard sein.
    Man kann nicht immer alle alten Systeme bedienen
    1 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    Habe mir jetzt mal nur angeschaut, wie du das ganze in der geposteten Datei benutzt,...

    Du machst in dem Fall zwei Arrays, wo eines vollkommen reichen würde.

    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    if( $result_classes > 0 ) {
      
        $ergebnis = db_query("SELECT * FROM `prefix_wow_classes` ORDER BY id ASC");
        while($row = db_fetch_object($ergebnis))
        {
            $wow_array_a[] = $row->id;
            $wow_array_b[] = $row->name;
            $wow_array_c[] = $row->icon;
            $form_classes .= '<option value="'. $row->id .'">'. $row->name .'</option>';
        }
          
        $wow_class['klasse'] = array_combine($wow_array_a, $wow_array_b);
        $wow_class['icon'] = array_combine($wow_array_a, $wow_array_c);
      
    }


    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    if( $result_classes > 0 ) {
         
        $wow_class = array();
     
        $ergebnis = db_query("SELECT * FROM `prefix_wow_classes` ORDER BY id ASC");
        while($row = db_fetch_object($ergebnis))
        {
            $wow_class[$row->id]['klasse'] = $row->name;
            $wow_class[$row->id]['icon'] = $row->name;
     
            $form_classes .= '<option value="'. $row->id .'">'. $row->name .'</option>';
        }
    }


    187
    188
    $ar['klicon'] = $wow_class['icon'][$row->classid];
    $ar['klname'] = $wow_class['klasse'][$row->classid];


    185
    186
    $ar['klicon'] = $wow_class[$row->classid]['icon'];
    $ar['klname'] = $wow_class[$row->classid]['klasse'];


    Ich hoffe ich habe nichts übersehen.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Ahrtas Moderator
    Registriert seit
    17.12.2007
    Beiträge
    2.368
    Beitragswertungen
    210 Beitragspunkte
    Also beide Arrays werden weiter unten separat ausgelesen.

    Und in Zeile 35 muss $row->icon anstelle von $row->name stehen. zwinker

    Ich habe mich für eine ähnliche Lösung entschieden.
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    if( $result_classes > 0 ) {
      
        $ergebnis = db_query("SELECT * FROM `prefix_wow_classes` ORDER BY id ASC");
        while($row = db_fetch_object($ergebnis))
        {
            $wow_class['klasse'][$row->id] = $row->name;
            $wow_class['icon'][$row->id] = $row->icon;
            $form_classes .= '<option value="'. $row->id .'">'. $row->name .'</option>';
        }
      
    }


    Aber dennoch Danke für den Denkanstoss. Yes


    Zuletzt modifiziert von Ahrtas am 12.04.2013 - 16:49:34
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    387 Beitragspunkte
    Also eine eigene array_combine Funktion zu schreiben, sollte auch kein Problem sein.

    Du kannst dann einfach mit function_exists überprüfen, ob es die Funktion schon gibt, wenn nicht legst du sie an.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (!function_exists('array_combine')) {
        function array_combine($keys, $values) {
            if (count($keys) != count($values)) {
                return false;
            }
            $output = array();
            $keys = array_values($keys);
            $values = array_values($values);
            foreach ($keys as $key => $value) {
                $output[$value] = $values[$key];
            }
            return $output;
        }
    }
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    2 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten