0

配列を設定する方法は次のとおりです。

 $Post_Cat_Array = array();
 while($row = mysql_fetch_array( $result )) {
 $Post_Cat_Array[$row['type_id']] = $row['type_name'];}

この関数では、特定の(値)のtype_id(キー)を取得する必要がありますtype_name

function NameToID($input){
echo array_search($input, $Post_Cat_Array); 
}

そして私はこのような関数を呼び出します:

NameToID($_POST['type']);

しかし、それは機能していません。何もエコーしません。$_POST['type']に正しい値が含まれていると確信しています。

注:の値$_POST['type']はアラビア語です。配列のすべての値と同じです。

4

2 に答える 2

1

$Post_Cat_Array範囲外のようです。関数を変更します。

function NameToID($input, $arr){
  echo array_search($input, $arr); 
}

その後:

NameToID($_POST['type'], $Post_Cat_Array);

PHP変数スコープから:

echoステートメントは(...)変数のローカルバージョンを参照しており、このスコープ内の値が割り当てられていないため、このスクリプトは出力を生成しません。

于 2012-08-04T08:25:27.743 に答える
1

これは、配列変数が関数に認識されていないためです。次のいずれかを使用して、それを実現できます

<?php
$Post_Cat_Array=array();
$Post_Cat_Array["key1"]="value1";
$Post_Cat_Array["key2"]="value2";
$Post_Cat_Array["key3"]="value3";
$Post_Cat_Array["key4"]="value4";

echo NameToID("value4");
echo "<br>";
echo NameToID2("value4",$Post_Cat_Array);

function NameToID($input){ 
    global $Post_Cat_Array;
    echo array_search($input, $Post_Cat_Array);  
} 
function NameToID2($input,$values){ 
    echo array_search($input, $values);  
} 
?>
于 2012-08-04T08:38:24.003 に答える