2013-07-15 15 views
10

Ich habe zwei Arrays mit einiger Benutzer-IDWie häufig Werte von zwei verschiedenen Arrays in PHP bekommen

$array1 = array("5","26","38","42"); 

$array2 = array("15","36","38","42"); 

Was ich brauche, ist, ich brauche die gemeinsamen Werte aus dem Array als

$array3 = array(0=>"38", 1=>"42"); 
folgte

Ich habe versucht array_intersect(). Ich möchte eine Methode, die minimale Ausführungszeit erfordert. Bitte hilf mir, Freunde.

+5

'array_intersect()' ist immer noch die beste Wahl. –

+0

http://php.net/manual/en/function.array-intersect.php –

+3

Was ist los mit 'array_intersect'? Es kann unmöglich zu langsam sein? – deceze

Antwort

23

Native PHP-Funktionen sind schneller als der Versuch, einen eigenen Algorithmus zu erstellen.

$result = array_intersect($array1, $array2); 
1

verwenden ein, obwohl diese vielleicht eine lange Methode:

$array1 = array("5","26","38","42"); 

$array2 = array("15","36","38","42"); 

$final_array = array(); 

foreach($array1 as $key=>$val){ 
    if(in_array($val,$array2)){ 
     $final_array[] = $val; 
    } 
} 

print_r($final_array); 

Ergebnis: Array ([0] => 38 [1] => 42)

+1

können Sie einen Grund vorschlagen, warum Ihre Antwort bessere Wahl über array_intersect ist ... – Sir

1

Ich glaube, Sie don ‚t müssen $key=>$value, um Ihr Problem zu verwenden, so überprüfen Sie diese Antwort:

<?php 
$array1 = array("5", "26", "38", "42"); 
$array2 = array("15", "36", "38", "42"); 

foreach ($array1 as $value) { 
    if (in_array($value, $array2)) { 
     $array3[] = $value; 
    } 
} 

print_r($array3); 
?> 
0

array_intersect() funktioniert gut.

Array array_intersect (array $ array1, array $ array2 [, array $ ...] )

$array1 = array("5","26","38","42"); 

$array2 = array("15","36","38","42"); 

echo array_intersect($array1, $array2); 

http://fr2.php.net/array_intersect

Verwandte Themen