PHP:获取与特定值匹配的数组的键


PHP : Get key of an array that matches specific value

以下是我如何设置阵列:

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

在这个函数中,我需要获得特定type_name(值)的type_id(密钥)

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

我这样调用函数:

NameToID($_POST['type']);

但它不起作用。它没有任何回声。我确信$_POST['type']包含正确的值。

注:$_POST['type']的值为阿拉伯语。与数组的所有值相同。

似乎$Post_Cat_Array超出了范围。修改您的功能:

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

然后:

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

来自PHP变量范围:

此脚本不会产生任何输出,因为echo语句指的是(…)变量的本地版本,但它尚未在此范围内分配了一个值。

这是因为函数不知道数组变量。您可以使用以下任一项来实现

<?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);  
} 
?>