php: Suche ob gleiche elemente in 2 Arrays
kleinerChemiker 05.07.2007 - 23:04 957 7
kleinerChemiker
Here to stay
|
Ich habe 2 Arrays. Nun will ich schauen, ob es gleiche Elemente gibt. in_array und search_array haben leider nicht funktioniert.
die Arrays sehen so aus: array(2) { [0]=> string(1) "3" [1]=> string(1) "2" }
Im Normalfall, haben sie unterschiedlich viele Elemente, aber sobald ein Element in beiden vorhanden ist, soll true zurückgeliefert werden. Gibt es da eine fertige Funktion oder muß ich mir da selber was schreiben?
tia
|
mat
AdministratorLegends never die
|
ich gehen in solchen fällen eigentlich jedesmal alle array-funktionen durch, auch wenn ich diese eigentlich schon auswendig kenne bzw. kennen sollte http://at2.php.net/manual/de/ref.array.phpschätze nicht, dass es für dich eine vorgefertigte funktion geben wird. in deinem fall würde ich einfach ein foreach durch ein array machen und jedes element per in_array() im 2ten array suchen. glaub nicht, dass das wirklich über 3 zeilen code kommt.. ob das natürlich für dich performancemäßig ausreicht ist eine andere frage.
|
kleinerChemiker
Here to stay
|
ja, bin die funktionen eh durchgegangen. aber hätte ja sein können, daß ich was übersehen habe. wäre nicht das erste mal, daß ich den wald vor lauter bäumen nicht seh ist eh nicht viel abreit, aber eben performancelastiger als eine fertige funktion. thx
|
Burschi1620
24/7 Santa Claus
|
was is an 2 forschleifen so schwer? Kann in php net mit arrays umgehen, aber ich schreibs dir mal so halb C halb struktogrammmäßig auf: 1. Schauen welches array größer is 2. for(i=0; i< großes array; i++) for(k=0;i<kleines array;k++) if(großes array[i]==kleines array[k]) RETURN TRUE so ich hoffe mal das stimmt so halbwegs und hilft dir XD edit: got owned
|
mat
AdministratorLegends never die
|
2x "for" bzw. "foreach" wäre langsamer. sobald man auf integrierte php-funktionen zurückgreifen kann, sollte man das auch tun.
|
kleinerChemiker
Here to stay
|
nix ist dran schwer, aber ist halt eine performancefrage wie mat schon geschrieben hat. außerdem reicht sogar ein foreach. function in_array_loop($array1, $array2) {
foreach($array1 AS $array) {
if (in_array($array, $array2)) { return true; }
}
return false;
}
|
UncleFucka
-
|
was is an 2 forschleifen so schwer?
Kann in php net mit arrays umgehen, aber ich schreibs dir mal so halb C halb struktogrammmäßig auf:
1. Schauen welches array größer is 2. for(i=0; i< großes array; i++) for(k=0;i<kleines array;k++) if(großes array[i]==kleines array[k]) RETURN TRUE
so ich hoffe mal das stimmt so halbwegs und hilft dir XD
edit: got owned komplett egal welches array größer is :P funktioniert immer
|
gue
Addicted
|
return count(array_intersect($a1, $a2)) > 0; :P
|