2

我有一个数组

第一:

    [0] => 0289 [1] => 0146 [2] => 5519 [3] => 5308 [4] => 5503 [5] => 5357

第二个(联想):

    [78941] => 5308 [15749] => 5519 [1469156] => 5308 [78971413] => 5357 [418979] => 0289

需要通过第一个值在第二个中找到键。逐个。我做了一些循环:

for($i=0;$i<=5;$i++){
$keys=array_search($first_array[$i],$second_array);   
file_put_contents('check.txt',$keys,FILE_APPEND);
}    

但一无所获。我做错了什么?

Addition

第二个数组比我在这里显示的要大,大约有 10000 个值。

我必须在每个文件中插入 5 个值,并且这些值必须是唯一的,以避免重叠。

它看起来像:

  $t=0;
 for($i=0;$i<=count($second_array);$i++){

$keys=array_search($first_array[$t],$second_array);   
file_put_contents('check.txt',$keys,FILE_APPEND);
 $t++
 if ($t==5){$t=0}

}

希望它会有所帮助。

4

4 回答 4

4

如果您只需要密钥,那么只需过滤它们:

$keys = array_intersect($first, array_keys($second));

但是,如果您想同时获取值和键,那么它会像:

$keysAndValues = array_intersect_key($second, array_flip($first));
于 2013-10-14T07:38:03.710 回答
1

您可以使用foreach循环以非常简单的方式做到这一点

<?php
      $i = 0;
      foreach($array2 as $key => $value):
         if($array1[$i] == $value) {
           //$key is the required key, manage your stuffs here.
         }
         $i++;
      endforeach;
 ?>
于 2013-10-14T07:39:37.857 回答
0

array_search()如果找到值则返回键,如果没有找到则返回 false,所以如果

你想要钥匙,这段代码就是你想要的:

$one=array("0"=>"0146","1"=>"5519","2"=>"5308","3"=>"5503","4"=>"5357");
$two=array("78941"=>"5308","15749"=>"5519","1469156"=>"5308","78971413"=>"5357","418979"=>"5357");
$result=array();

for($i=0;$i<=5;$i++){
if(array_search($one[$i],$two))
$result[]=array_search($one[$i],$two);
}
print_r($result);//OR file_put_contents('check.txt',$result,FILE_APPEND)
于 2013-10-14T08:13:41.257 回答
0
foreach($first_array as $first_key => $first_value){
    foreach($second_array as $second_key => $second_value){
        if($first_value == $second_value){
            file_put_contents($file_name, $second_key . "\n", FILE_APPEND);
        }
    }
}
于 2013-10-14T07:39:13.363 回答