2016-09-07 3 views
0

Gibt es eine eingebaute Funktion, um die Lookup-Funktion in PHP wie die Excel-Funktion zu aktivieren? Ich dachte, dass die array_search die nächste wäre, aber es wird nicht funktionieren, wenn die gemischte Nadel (Wert) mehr als einen Wert hat. Zur Veranschaulichung, die Lookup Ich versuche durchzuführen:Lookup-Funktion in PHP

function lookup($datatype){ 
    $array = array(
     'BINARY' => 'RAW', 
     'REAL' => 'FLOAT', 
     'INTEGER' => 'NUMBER', 
     'DATETIME' => 'DATE', 
     'VARCHAR' => 'VARCHAR2', 
     'DATETIME' => 'TIMESTAMP', 
     'VARBINARY' => 'BFILE', 
     'INT' => 'NUMERIC' 
     ); 

    $key = array_search($datatype, $array); 

    return $key; 
} 

Wenn die Suche nach dem ‚RAW‘ ist, array_search kehrt Binärdienst, aber wenn die Suche ‚Datum‘ ist, es wird nichts zurück .

Alle Gedanken würden sehr geschätzt werden.

+5

Sie können nicht zweimal den gleichen Schlüssel in Ihrem Array haben! ''DATETIME' => 'DATE',' existiert NICHT in Ihrem Array. – Rizier123

Antwort

1

die $ Array bietet die gleichen Schlüssel ‚DATETIME-‘ zweimal, zweite wird die erste overrite, so $ array haben nicht die ‚DATE‘ Schlüssel

0

Sie können nicht den gleichen Schlüssel haben zweimal in Ihrem Array! Sie können anstelle von ‚DATETIME-‘ auf ‚DATETIME_test‘

function lookup($datatype){ 
     $array = array(
       'BINARY' => 'RAW', 
       'REAL' => 'FLOAT', 
       'INTEGER' => 'NUMBER', 
       'DATETIME_test' => 'DATE', 
       'VARCHAR' => 'VARCHAR2', 
       'DATETIME' => 'TIMESTAMP', 
       'VARBINARY' => 'BFILE', 
       'INT' => 'NUMERIC', 
     ); 

     $key = array_search($datatype, $array); 

     return $key; 
    } 

    var_dump(lookup('DATE')); 
0

Wie Sie Ihr Array erwähnt, gibt es doppelte Schlüssel „DATETIME-“, so wird es durch den letzten Wert überschreiben. und dein Array wäre wie folgt.

$array = array(
     'BINARY' => 'RAW', 
     'REAL' => 'FLOAT', 
     'INTEGER' => 'NUMBER', 
     'VARCHAR' => 'VARCHAR2', 
     'DATETIME' => 'TIMESTAMP', 
     'VARBINARY' => 'BFILE', 
     'INT' => 'NUMERIC' 
     ); 
so whenever you are trying to filter out or willing to get, only one key is available. 

Besser aufschreiben mit anderen Schlüssel. und versuchen Sie dann, array_search nach Schlüssel zu suchen.