php: Suche ob gleiche elemente in 2 Arrays

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_suche_ob_gleiche_elemente_in_2_arrays_182037/page_1 - zur Vollversion wechseln!


kleinerChemiker schrieb am 05.07.2007 um 23:04

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 schrieb am 05.07.2007 um 23:11

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 schrieb am 05.07.2007 um 23:15

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 schrieb am 05.07.2007 um 23:17

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 schrieb am 05.07.2007 um 23:21

2x "for" bzw. "foreach" wäre langsamer. sobald man auf integrierte php-funktionen zurückgreifen kann, sollte man das auch tun.


kleinerChemiker schrieb am 05.07.2007 um 23:44

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 schrieb am 06.07.2007 um 00:09

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 schrieb am 06.07.2007 um 08:43

return count(array_intersect($a1, $a2)) > 0;
:P




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025