0

値に基づいて配列のキーを取得しようとしています。

$array1=array(
'0'=>'test1',
'1'=>'test2',
'2'=>'test3',
'3'=>'test1'
)

$array2=array(
'0'=>'11',
'1'=>'22',
'2'=>'33',
'3'=>'44'
)

私は持っている

$source針です。test1' '、' test2' または ' test3'の可能性があります。

for loop to get different $source string

   if(in_array($source[$i], $array1)){
      $id=array_search($source[$i],$array1);
      //I want to output 11, 22 or 33 based on $source
      //However, my $array1 has duplicated value.
      //In my case, if $source is test1, the output will be 11,11 instead of 11 and 44

      echo $array2[$id]);
   }

これを修正する方法がわかりません。私の脳は揚げられています。助けてくれてありがとう!

4

2 に答える 2

2

PHP にはこのための関数があります: http://php.net/manual/en/function.array-keys.php

つまり$keys = array_keys( $myArray, $theValue );、最初のものだけを取得するには:$keys[0];

于 2013-02-08T20:54:48.200 に答える
1

これはうまくいくはずです。

$array3 = array_flip(array_reverse($array1, true));
$needle = $source[$i];
$key = $array3[$needle];
echo $array2[$key];

array_flipキーと値を交換することです。値が重複している場合は、最後のペアのみが交換されます。これに対抗するために、使用しますarray_reverseが、キー構造は保持します。

編集:より明確にするために、ここに予行演習があります。

$array1=array(
'0'=>'test1',
'1'=>'test2',
'2'=>'test3',
'3'=>'test1'
)

array_reverse($array1, true)出力後

array(
'3' => 'test1',
'2' => 'test3',
'1' => 'test2',
'0' => 'test1'
)

これを反転すると、出力は次のようになります。

array(
'test1' => '0', //would be 3 initially, then overwritten by 0
'test2' => '1',
'test3' => '2',
)
于 2013-02-08T20:53:39.423 に答える