0

私は二次元配列 $array_userinfo を持っています。21,000 要素。各要素には、最初の位置に「login」、2 番目の位置に「email」があります。私がする必要があるのは、この配列をループして、別の $array_usermeetingfolder から一致する「ログイン」を見つけることです。700要素。

2 つの配列が設定されています。

foreach ($child->children() as $node_principalid) {
array_userinfo[$i][0] = (string) $node_principalid->login;
$array_userinfo[$i][1] = (string) $node_principalid->email;
i++;                            
}

foreach (.......) {
$endusersconame =  (string) $usermeetingsfoldersco->children()->name;       
$array_usermeetingfolder[$j] = $endusersconame;//
 $j++;
}

これを行うための最良/効率的な方法は何ですか? 次のようなループがあります。

for ($k=0;$k < count($array_userinfo);$k++) {
//tempecho($array_userinfo[$k][0]);//will yield login, such as, 'joeblow'
}

ありがとう。

4

3 に答える 3

1

ログインを配列キーとして使用することが可能であれば、キーにすばやくアクセスでき、パフォーマンスについて考える必要はないと思います。PHP の配列はハッシュマップであり、配列全体をチェックする必要がある場合でも、キーがわかっている場合はすばやくアクセスできます。変更できない場合は、配列からデータ構造を作成して、このパフォーマンスを向上させることを検討する必要があります。それが価値があるかどうかわからない、それを測定してください:)

お気に入り:

<?php
foreach($array_userinfo as $info) {
    $checkAgainst[$info[0]] = $info[1];
}

foreach($array_usermeetingfolder as $mail) {
    if(isset($checkAgainst[$mail]) {
        $return[$mail] = $checkAgainst[$mail];
    }
}

// use $return
于 2013-01-16T17:18:04.703 に答える
1

考えられる解決策の 1 つ:

これを変換する$array_usermeetingfolderと、ユーザー ログインがキーで値が何でもある配列が得られます。例えば

$temp = array('joeblow' => 1,
      'someoneelse' => 1,
      ...);

次に、ループでキーが存在するかどうかを確認できます。

if (isset($temp[$array_userinfo[$k][0]]) {
    echo 'Hoozah!';
}

array_key_exists()isset の代わりに使用することもできます。より効率的ないくつかのテストを実行する必要があります。

于 2013-01-16T16:57:05.150 に答える
0

以下はうまくいくはずです。

for($i=0;$i <= count($firstarray);$i++)
    {
    for ($j=0;$j <= count($secondarray);$j++)
    {
        while($firstarray[$i][0] == $secondarray[$j])
        {
            echo $firstarray[$i][0]; // or $secondarray[$j]
        }

    }



    }
于 2013-01-16T17:23:12.810 に答える