2016-09-07 15 views
0

PHPでルックアップ機能を有効にする関数はありますか?私はarray_searchが最も近いものだと思ったが、混在針(値)に複数の値がある場合は機能しません。説明するために、私が実行しようとするルックアップは次のとおりです。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; 
} 

検索がarray_searchは「BINARY」が返されます、「RAW」のためですが、検索が「DATE」の場合、それは何も返さない場合。

ご意見をいただければ幸いです。

+5

アレイ内で同じキーを2回使用することはできません。 '' DATETIME '=>' DATE '、 'はあなたの配列に存在しません。 – Rizier123

答えて

1

$配列は、二番目は、最初にoverriteなり、二度同じキー「DATETIME」を持っているので、$配列はキー

0

「DATE」を持っていないあなたは、あなたの中に二度同じキーを持つことはできませんアレイ!次のことができます代わりに「DATETIME」のへの「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

あなたの配列を述べたように、そこに「DATETIME」の重複キーがあるので、それは最後の値によって上書きされます。あなたの配列は次のようになります。

$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. 

異なるキーで書き留めてください。キーのarray_searchを試してください。