0

我的问题:

$state=array("你"=>1); 
if(array_key_exists("你",$state)) 
{ 
$result = array_search("你",$state);echo $result;
}else
{
echo "No Exists";
}

我期望“1”的结果,但是输出是“不存在”,我不知道为什么程序无法获得键“你”的值。

4

3 回答 3

1

array_search将按值搜索给定的数组。尝试以下操作:

$state = array("你"=>1); 
if(array_key_exists("你", $state))  { 
  echo $state["你"];
} else {
  echo "No Exists";
}

// => 1

» 演示

于 2013-01-22T08:22:23.787 回答
0
the encoding type of  the show paper and the store paper  is GB2312.


    $state=array("你"=>1);   
    if(array_key_exists("你",$state)) 
    { 
    $result1 = $state["你"];
         echo $result1;  // can get the value  111
    }else
    {
    echo "No Exists";
    }

上面的代码可以正确执行。我无法准确地展示我的问题。现在我粘贴我的代码,有一些问题。

<?php
  $file = file("GB2312-HanZiBianMa.txt");  // file encoding type ANSI 
   foreach ($file  as $line_num => $line)
    {
    list($no,$hex,$dec) = preg_split('[\t]',htmlspecialchars($line));;
    $result[$hex] = $dec;
    }
  $result_2 = array_flip($result);
 if(array_key_exists("你",$result_2))   // **can't find the value** 222
    { 
    $state= $result_2["你"];
    echo $state."<br/>";
    }else
    {
    echo "No Exists<br/>";
    }

foreach($result_2 as $k=>$each)   //can get the value using the preg_match  
        {
         if(preg_match('/你/', $k))
            echo $k."\t".$each."<br/>";     
        }   
  ?>



  the format of GB2312-HanZiBianMa.txt is as follows:
    1947    c4e3    你
    1948    c4e4    匿
    1949    c4e5    腻
    1950    c4e6    逆

如果您想测试代码,您可以保存 php 代码并保存 GB2312.. 文件。问题是:为什么下面的函数不能得到正确的值?数据来自文件和一个存储在一起。

if(array_key_exists("你",$result_2))   // **can't find the value** 222
    { 
    $state= $result_2["你"];
    echo $state."<br/>";
    }else
    {
    echo "No Exists<br/>";
    }
于 2013-01-23T14:44:21.667 回答
0

希望下面的功能会有所帮助。

<?php
    $array = array('arr1'=>array('find_me'=>'yes you did.'));

    function get_value_by_key($array,$key)
    {
        foreach($array as $k=>$each)
        {
            if($k==$key)
            {
                return $each;
            }

            if(is_array($each))
            {
                if($return = get_value_by_key($each,$key))
                {
                    return $return;
                }
            }

        }
    }
    echo get_value_by_key($array,'find_me');
?>
于 2013-01-22T08:27:49.397 回答