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

时间:2012-08-04 08:15:54

标签: php arrays function key

以下是我设置数组的方法:

 $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']的值是阿拉伯语。与数组的所有值相同。

2 个答案:

答案 0 :(得分:1)

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

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

然后:

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

来自PHP Variable scope

  

由于echo语句,此脚本不会产生任何输出   指的是(...)变量的本地版本,它还没有   在此范围内分配了一个值。

答案 1 :(得分: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);  
} 
?>