"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

php: Suche ob gleiche elemente in 2 Arrays

kleinerChemiker 05.07.2007 - 23:04 957 7
Posts

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4282
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
ich gehen in solchen fällen eigentlich jedesmal alle array-funktionen durch, auch wenn ich diese eigentlich schon auswendig kenne bzw. kennen sollte :D

http://at2.php.net/manual/de/ref.array.php

schä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
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4282
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
Avatar
Registered: Apr 2004
Location: Drüber da Donau
Posts: 6792
was is an 2 forschleifen so schwer? :D

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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
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
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4282
nix ist dran schwer, aber ist halt eine performancefrage wie mat schon geschrieben hat. außerdem reicht sogar ein foreach.

Code: PHP
	function in_array_loop($array1, $array2) {
				foreach($array1 AS $array) {
					if (in_array($array, $array2)) { return true; }
				}
		return false;
	}

UncleFucka

-
Avatar
Registered: Jun 2002
Location: CH
Posts: 4737
Zitat von Burschi1620
was is an 2 forschleifen so schwer? :D

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
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
return count(array_intersect($a1, $a2)) > 0;
:P
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz