0

私の質問:

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

「1」の結果を期待していますが、出力は「No Exists」です。プログラムがキー「你」の値を取得できない理由がわかりません。

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

以下の機能が役立つことを願っています。

<?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 に答える
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.. ファイルを保存します。問題は、次の関数が正しい値を取得できないのはなぜですか? データはファイルから取得され、1 つが一緒に保存されます。

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 に答える