ich habe vier array´s und will die gemeinsamen elemente der vier array´s herausfinden. klappt ja mit array_intersect ziemlich gut. mein problem ist nun, dass es bei mir auch vorkommt, dass ein oder mehrere array´s leer sind. das verkraftet array_intersect dann nicht mehr. da ich vier array´s habe, wären das 16 kombinationen und so viele if-anweisungen und array_intersect-befehle will ich dann doch nicht tippsen, vorallen wenn irgendwann mal noch eins dazu kommt. gibt es da eine andere/bessere lösung?
array_intersect
Einklappen
X
-
Re: array_intersect
Original geschrieben von KamiKatze
mein problem ist nun, dass es bei mir auch vorkommt, dass ein oder mehrere array´s leer sind. das verkraftet array_intersect dann nicht mehr.
OffTopic:
Immer diese verdammt unpräsizen Problembeschreibungen. Auch "verkraftet es nicht" ist schon reichlicher Mist.I don't believe in rebirth. Actually, I never did in my whole lives.
-
OffTopic:
wahsaga verkraftet es nicht, sich mit unpräzisen Posts rumschlagen zu müssen
@wahsaga: kann es sein, dass du in letzter Zeit sehr laut denkst
@KamiKatze: plz codeSunshine CMS
BannerAdManagement
Borlabs - because we make IT easier
Formulargenerator [color=red]Neu![/color]
Herkunftsstatistik [color=red]Neu![/color]
Kommentar
-
array_intersect vergleicht die eingegebenen array´s und sucht gemeinsame inhalte. was passiert, wenn ein array mit 20 einträgen kommt und was wenn ein leeres array kommt? da gibt es keine übereinstimmungen und die ergebnismenge ist leer.OffTopic:
mit einem blick in die hilfe und kurzem nachdenken könnte man drauf kommen, dass ich vielleicht genau das meinte
ist ja auch logisch und richtig was array_intersect da macht, doch ich würde gern wissen, ob es die möglichkeit gibt, dass array_intersect die leeren array´s ignoriert, oder ob es einen ähnlichen befehl gibt, der so arbeitet?
oder muss ich array_intersect($array1, $array2, $array3); bzw. array_intersect ($array1, $array3); .... mit if abfangen?ich geh zum lachen in den keller
Kommentar
-
Allenfalls wenn du ein Array um die leeren Einträge säuberst ?
PHP-Code:function rem_empty($var){
if($var === ''){
return false;
}
else{
return true;
}
}
//Dein Array
$temp = array_filter($dein_array,"rem_empty");
$tempo = array_intersect($temp,$dein_array1,$dein_array2);
Gruss
tobiGutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten
[color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Kommentar
-
Original geschrieben von KamiKatze
OffTopic:
mit einem blick in die hilfe und kurzem nachdenken könnte man drauf kommen, dass ich vielleicht genau das meinteOffTopic:
Jetzt sollen wir uns als noch den Kopf darüber zerbrechen und im Manual wühlen, weil du nicht in der Lage bist, eine präzisere Problembeschreibung zu verfassen?
Aber sonst darfst du noch alles essen ...?
array_intersect vergleicht die eingegebenen array´s und sucht gemeinsame inhalte. was passiert, wenn ein array mit 20 einträgen kommt und was wenn ein leeres array kommt? da gibt es keine übereinstimmungen und die ergebnismenge ist leer.I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
Works as designed.
Jetzt sollen wir uns als noch den Kopf darüber zerbrechen und im Manual wühlen, ...problem ist nun, dass es bei mir auch vorkommt, dass ein oder mehrere array´s leer sind.
und meine frageda ich vier array´s habe, wären das 16 kombinationen und so viele if-anweisungen und array_intersect-befehle will ich dann doch nicht tippsen, vorallen wenn irgendwann mal noch eins dazu kommt. GIBT ES DA EINE ANDERE/BESSERE LÖSUNG?ich geh zum lachen in den keller
Kommentar
-
Original geschrieben von KamiKatze
nein, aber man sollte doch über die arbeitsweise des befehls bescheid wissen, bevor man eine antwort gibt, oder? ein blick in die hilfe und ein blick auf hätte doch schon all deine fragen beseitigt, oder?
Was der Befehl macht, ist mir bewusst.
Aber an hand deiner Fragestellung war mir nicht klar, was du denn jetzt wissen wolltest. Wieso formulierst du derart d*mlich? Was soll die Behauptung, dass array_intersect "leere Arrays nicht verkraften" würde? Das ist absoluter Nonsense, natürlich tut es das. Dass das Ergebnis dann vielleicht nicht dem von dir gewünschten entspricht, ist doch eine ganz andere Baustelle.
/EOD für mich.I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
OffTopic:
wow, du musst wirklich einen vedammt schlechten tag haben. eine einfach nachfrage hätte doch vollkommen ausgereicht. wir sind doch trotz deines tollen eröffnungsthreadsImmer diese verdammt unpräsizen Problembeschreibungen. Auch "verkraftet es nicht" ist schon reichlicher Mist.
Wieso formulierst du derart d*mlich?
Ich bedanke mich bei Benny-one und jahlives.
OffTopic:
@wahsaga/EOD für mich.Zuletzt geändert von KamiKatze; 27.10.2005, 14:28.ich geh zum lachen in den keller
Kommentar
-
@KamiKatze: wahsaga hat mit seinem ersten Post eine Hilfestellung gegeben.
"Verkraftet" es das nicht, wenn die Arrays nur leer sind - oder gibt es Typprobleme, weil es vielleicht gar keine Arrays sind?
Und einen Thread in Brainstorming aufmachen ist sicherlich der falsche Weg. 1. Crossposting (garnicht gerne gesehen), 2. handelt es sich hier um ein PHP Problem, warum also Brainstorming...Zuletzt geändert von Benny-one; 27.10.2005, 14:55.Sunshine CMS
BannerAdManagement
Borlabs - because we make IT easier
Formulargenerator [color=red]Neu![/color]
Herkunftsstatistik [color=red]Neu![/color]
Kommentar
-
ich weiß, dass ich mein problem hätte besser formulieren können und wahsaga weiß, das man manche offtopics besser für sich behält und lieber einmal laut durchs büro schreit. es ging um die art, um meine und seine und die waren beide nicht das gelbe vom ei. da sollten wir uns eigentlich alle einig sein, oder?
was das brainstorming angeht: das problem liegt ja nicht an der funktion array_intersect, sondern daran, dass ich diese funktion abgewandelt brauche. diese scheint es aber nicht abgewandelt zu geben und daraus stellt sich doch die frage, wie man diese problemstellung besser umsetzen kann. vielleicht eine geschachtelte verwendung von array_intersect, oder die array´s anders definieren, usw. sollte doch eigentlich zu brainstorming passen, oder?
das Crossposting nicht gerne gesehen wird, weiß ich. doch ehrlich gesagt, will ich das problem in diesem thread, mit den vorhergehenden äußerungen nicht weiterführen. ich würde aufgrund der vorhergehenden fehler mit dem thema nochmal neu beginnen wollen (als zeichen der besserung ) es würde mich sehr freuen, wenn der thread auf den müll wandert. hier hab weder ich mich, noch wahsage sich mit ruhm bekleckert und das muss ja ein erstbesucher nicht unter den normal topics finden.ich geh zum lachen in den keller
Kommentar
-
Original geschrieben von KamiKatze
denn ich suche immer noch hilfe bzw. vorschläge zu diesem thema.
Also, Problem ist, dass du mit leeren Arrays keine Übereinstimmungen bekommst, richtig? Gut, das ist ja auch so weit erst mal logisch. Wenn du fragt, wie viele Elemente aus dem Array {7, 3, 11 } und dem leeren Array { } übereinstimmen, sind das nun mal exakt null Stück.
Du willst also jetzt Arrays, die leer sind, gar nicht mit in die Betrachtung einbeziehen? Ist das korrekt? (eine definitive Aussage hierzu fehlt mir irgendwie noch - und das ist dann ja schon von dem, was du willst, etwas ganz anderes als "array_intersect kommt damit nicht klar".)
Dann würde ich mir eine Art "Wrapper" für array_intersect schreiben, der zwei Arrays übergeben bekommt. Wenn diese beide nicht leer sind, bildet er durch Aufruf von array_intersect mit diesen zwei Arrays die "Schnittmenge", und gibt sie zurück. Andernfalls gibt er nur das gefüllt übergebene Array unverändert zurück.
Dieses zurückgegebene Array und das "nächste" von deinen Arrays werden jetzt wiederum in deinen Wrapper reingegeben, etc.
Da muss man dann aber noch drauf achten, was passiert, wenn mal beide Arrays beim Aufruf dieses Wrappers leer sein sollten ...I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
es sind momentan 4 array´s. dabei bleibt es auch erstmal.
ich schicke 4 query´s an eine datenbank, die alle als ergebnis indexe liefern. der index ist aber ein fremdschlüssel auf eine andere tabelle.
die ergebnisse der query´s wandel ich alle in array´s um und damit komm ich auf meine 4 stück.
jetzt kann es aber passieren, dass eine der query´s kein ergebnis liefert. das heißt ja nun aber nicht, dass es den fremdschlüssel nicht gibt, so lange mindestens eine query ein ergebnis liefert. damit entstehen die leeren array´s, die ich ignorieren möchte.
würden alle kein ergebnis liefern, scheitert ja die komplette suche. das überprüfe ich und damit ist dieser fall behandelt.
was meinst du mit "wrapper"? das sagt mir nur etwas in verbindung mit klassen.
das prinzip hört sich aber vielversprechend an. ich würde mir eine funktion schreiben, der ich wie du schon meintest zwei array´s übergebe und dann wenn sie beide nicht leer sind array_intersect nutze und als ergebnis zurückgebe, oder nur das volle.
ich probiere es gleich mal. für deine hilfeich geh zum lachen in den keller
Kommentar
-
Original geschrieben von KamiKatze
die ergebnisse der query´s wandel ich alle in array´s um und damit komm ich auf meine 4 stück.
jetzt kann es aber passieren, dass eine der query´s kein ergebnis liefert.
1. query -> $array1 erstellen
$ergebnis = $array1
2. query -> array2 erstellen
wenn $ergebnis leer -> $ergebnis = $array2
andernfalls -> wenn $array2 nicht leer -> $ergebnis = array_intersect($ergebnis, $array2)
3. query -> array3 erstellen
wenn $ergebnis leer -> $ergebnis = $array3
andernfalls -> wenn $array3 nicht leer -> $ergebnis = array_intersect($ergebnis, $array3)
...I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
Kommentar