CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
24.08.2004, 09:05:05
|
Junior Member
|
|
Registriert seit: Sep 2002
Ort: Wien
Beiträge: 191
|
|
array_intersect: wie können leere arrays ausgeschlossen werden?
hat jemand eine idee, wie ich bei der bildung einer schnittmenge von mehreren arrays ausschlißen kann, dass LEERE arrays miteinbezogen werden?
ich habe 6 arrays, von denen möglicherweise (kommt auf die eingabe an), eines oder mehrere arrays leer sind.
ich will nun von diesen 6 arrays eine schnittmenge bilden:
$neues_array=array_intersect ($array1, $array2 ... $array6);
würde bedeuten, dass - wenn eines der arrays leer ist, auch $neues_array leer ist.
ich will aber nur von den arrays die schnittmenge bilden, die werte enthalten!!!
wenn ich davor abfrage (z.b. mit if (count($array1)>0) müsste ich ja unzählige varianten (weils ja 6 mal 5 möglichkeiten gibt) des "array_intersect"-befehles abfragen ...
gibts da eine andere möglichkeit????
|
24.08.2004, 09:20:19
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
Zitat:
würde bedeuten, dass - wenn eines der arrays leer ist, auch $neues_array leer ist.
|
ist das eine frage?
Zitat:
wenn ich davor abfrage (z.b. mit if (count($array1)>0) müsste ich ja unzählige varianten (weils ja 6 mal 5 möglichkeiten gibt) des "array_intersect"-befehles abfragen ...
|
wären deiner aussage nach 30, also durchaus abzählbar. ich denke aber es sind 2^6, also 64.
es ist klar, dass wenn aus 3 mengen die schnittmenge gebildet wird und eine davon leer ist, dass dann die ergebnissmenge auch leer ist, da die leere menge die einzige menge ist, die in dem fall allen (anderen) mengen gemein ist.
|
24.08.2004, 09:44:51
|
Junior Member
|
|
Registriert seit: Sep 2002
Ort: Wien
Beiträge: 191
|
|
genau.
genau deshalb will ich ja die leeren arrays ausschließen.
es geht dabei um eine suche in einer datenbank, bei der der user mehrere kriterien (gleichzeitig) eingeben kann.
gibt er nun bei allen such-kriterien etwas ein, entsteht zu jedem kriterium ein array (mit den recordnummern der gefundenen datensätze).
gefunden werden sollen nur datensätze, die in allen arrays enthalten sind --> daher die schnittmenge.
wenn er nun bei einem kriterium nichts eingibt, bleibt das entsprechende array leer.
das bedeutet aber: für dieses kriterium gibt es KEINE einschränkung.
die einzige lösung die mir einfällt wäre, für dieses "leere" kriterium ALLE datensätze in das entsprechende array zu übernehmen -- dann würds funktionieren (die schnittmenge schließt dann ja alle aus, die nicht in den anderen arrays vorkommen).
Nur: bei ein paar tausend datensätze werden das ja riesige arrays .....
wenn nur der user KEINE kriterien eingibt, enstehen 6 arrays mit je ein paar tausend zeilen ....
|
24.08.2004, 10:59:12
|
Junior Member
|
|
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
|
|
Hi,
zu Deiner Frage kann ich leider nicht viel beitragen, außer Dir einen anderen Ansatz vorschlagen.
Wie wäre es, wenn Du das Ganze mit entsprechenden SQL Befehlen löst? Z.B. kannst Du zuerst nach den Kriterien 1 und 2 suchen, die IDs der Datensätze, die gefunden werden, speichern und anschließend einen zweiten SELECT mit den Kriterien 3 und 4 absetzen, wobei Du die Suchmenge schon mit "WHERE id in (gefundene IDs)" eingrenzt.
Selbstverständlich kannst Du vorm Absetzen eines zweiten oder dritten SELECTS abfragen, ob vorher Ergebnisse gefunden wurden.
Ideal ist natürlich ein SQL Befehl, mit dem Du alles auf einmal machen kannst. Dies sollte je nach DB- Aufbau und SQL Kenntnissen eigentlich möglich sein.
HTH,
Andy
|
24.08.2004, 11:15:03
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
Re: array_intersect: wie können leere arrays ausgeschlossen werden?
Zitat:
Original geschrieben von gerhard
hat jemand eine idee, wie ich bei der bildung einer schnittmenge von mehreren arrays ausschlißen kann, dass LEERE arrays miteinbezogen werden?
|
Entweder bei der Bildungs des Arrays oder bei der Berechnung leere Arrays übergehen.
zB:
PHP-Code:
$neues_array = array();
if (count($array1)>0 $neues_array[] = $array1;
if (count($array2)>0 $neues_array[] = $array2;
# usw.
|
24.08.2004, 21:38:43
|
Junior Member
|
|
Registriert seit: Aug 2003
Ort: Fürstenau (Uckermark, Land Brandenburg)
Beiträge: 259
|
|
würde auch gehen.
PHP-Code:
<?php
$neues_array = array();
if (!empty($array1))
$neues_array[] = $array1;
if (!empty($array2))
$neues_array[] = $array2;
# usw.
?>
|
25.08.2004, 03:20:08
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
empty()
Zitat:
Original geschrieben von René_M
würde auch gehen.
|
Stimmt: http://test.php-help.info/array-1/
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:48:16 Uhr.
|