3

私の問題は次のとおりです。

別の配列がチェックする必要がある $ownerArray という配列があり、両方の配列にキーが存在する場合は、一致するキーの値が表示されます。$ownerArray はデータベースによって設定されるため、if ステートメント内に ir ステートメントを書くことはできません。

$ownerArray は次のようになります。

$ownerArray = array(0 =>'Name0',1 =>'Name1',2 =>'Name2',3 =>'Name3');

次に、ユーザーが選択した内容に応じてさまざまな数の値を持つ $Users という別の配列があるため、$Users は次のようになります。

$Users = '1,2'

またはこのように:

$Users = '1,3'

$Users は決して同じではありません。

しかし、$Users の整数値のいずれかが $ownerArray の任意の $key と一致する場合、表示するには $ownerArray の $value が必要です

例:

foreach($ownerArray as $key => $value) 
            { 
                if(in_array($key,array($Users)))
                {
                    print $value; 
                } 
            }

このメソッドは、最初の一致で停止し、正しい名前を表示します。より多くの値が一致する場合、ループは印刷を続行しません。

私が探しているのは、$Users = '1,3' の場合、私の for ループは $ownerArray から Name1 と Name3 を出力することです。

助けてくれてありがとう!

ps if($key==1 || $key ==2) を使用できることはわかっていますが、この場合は機能しません。

4

3 に答える 3

4
$merged = array_flip(array_intersect(array_flip($owners), explode(',', $users)));
于 2012-04-11T18:43:26.807 に答える
1

このようなものが機能する可能性があります

<?php

$ownerArray = array(0 =>'Name0',1 =>'Name1',2 =>'Name2',3 =>'Name3');
$users = explode(',','1,2');

if(count($users) > 0){
    foreach($users as $user){
        if($key = array_search($user,$ownerArray)){
            echo $key;
        }
    }
}


?>
于 2012-04-11T18:35:00.343 に答える
0

論理を逆にするだけです。実際には、ユーザーを循環させ、所有者配列に存在する場合は何かを出力したいと考えています。その逆ではありません。(このコードが少しずれている場合は申し訳ありませんが、この考えは理解できます。)

foreach($Users as $value)
{
  if(in_array($value,array($ownerArray)))
  {
    print $ownerArray[$value]; 
  }
} 
于 2012-04-11T18:35:24.603 に答える