2016-11-12 5 views
0

こんにちは私は、 "category"という名前のファイルに値 "a"を渡すコマンドを実行しているという問題があります。引数がarray_searchに正しく渡されない

私は自分のPHPファイルを実行して、 "category"の内容を$datatypeという変数に設定したいと考えています。変数をエコーすると、 "a"が出力されるので、これは成功です。しかし、私はこの値を配列で検索し、対応する値 "1"を返したいと思います。私が実際に$datatypeを設定しない限り、それは機能しません$dataype = "2";私は間違って何を考えている?

Xorifelseが提案どのような使い方
<? 
//PUT VALUE "a" INTO A FILE CALLED category 
echo shell_exec("cat ".$filename." | cut -f2 | head -1 > category"); 

$datatype = file_get_contents("category"); 
echo file_get_contents("category"); // PRINTS "a" 
echo $datatype; //PRINTS "a" 

$array = array(
      "1"=>"a", 
      "2"=>"b", 
      "3"=>"c", 
      "4"=>"d", 
     ); 

$key = array_search($datatype, $array); 
echo $key; // DOESN'T PRINT ANYTHING!!!! I EXPECT "1" TO BE PRINTED 



//IF I CHANGE TO BELOW IT WORKS...."1" IS PRINTED 
$datatype = "a"; 

?> 

file_get_contents("category", NULL, NULL, 0, 1); 

または何yardpenalty提案:

array_search($datatype[0], $array) 

これらの作業の両方を。しかし、私の実際の問題は、単一の文字だけでなく、さまざまな長さの単語を呼び起こします。これは、単語の後のスペースに問題がなければならないことを私に伝えますか?私はそれが理にかなってほしいのですか

+1

'echo $ 'datatype';' 'を試して、' new line'などの隠し文字を探してください。 '" a "!=" a \ n "' – Xorifelse

+1

あなたはfile_get_contents( "category"、NULL、NULL、0、1)を試しましたか?最初の文字を文字列として返すだけですか? – yardpenalty

+1

または 'array_search($ datatype [0]、$ array)'を実行して '$ datatype'文字列の最初の文字と一致させてください – Xorifelse

答えて

1

パラメータにさまざまな長さを許可する必要がある場合は、trim() functionを使用できます。可能な文字列の長さをすべて扱うスイッチケースを持っていることを確認してください:

function handleDataType($datatype){ 

$temp = trim($datatype); 
$key = ""; 
switch ($temp) { 
     case strlen($temp) == 1: 
     case strlen($temp) == 2: 
     case strlen($temp) == 4: 
      $key = array_search($temp, $array); 
      break; 
     default: 
      throw new Exception('Parameter is out of bounds!'); 
    } 
    $array = array(
      "1"=>"a", 
      "2"=>"to", 
      "3"=>"four", 
      "4"=>"d", 
     ); 

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

    return $key; 
} 


try { 

    $datatype = file_get_contents("category"); 
    echo handleDataType("six") . "\n"; 
} catch (Exception $e) { 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 
関連する問題