SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 24.08.2004, 09:05:05
gerhard gerhard ist offline
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????
Mit Zitat antworten
  #2  
Alt 24.08.2004, 09:20:19
feuervogel feuervogel ist offline
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.
Mit Zitat antworten
  #3  
Alt 24.08.2004, 09:44:51
gerhard gerhard ist offline
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 ....
Mit Zitat antworten
  #4  
Alt 24.08.2004, 10:59:12
diver-network diver-network ist offline
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
Mit Zitat antworten
  #5  
Alt 24.08.2004, 11:15:03
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
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. 
Mit Zitat antworten
  #6  
Alt 24.08.2004, 21:38:43
René_M René_M ist offline
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.

?>
__________________
Gruß
René

lange Weile dann --> Webchess 2003
Mit Zitat antworten
  #7  
Alt 25.08.2004, 03:20:08
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
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/
Mit Zitat antworten
Antwort


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:00:05 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt