php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 17-05-2013, 06:32
Koda
 Registrierter Benutzer
Links : Onlinestatus : Koda ist offline
Registriert seit: Aug 2010
Beiträge: 105
Koda befindet sich auf einem aufstrebenden Ast
Standard Alle Varianten von mehreren Arrays

Guten Morgen

Ich habe oft 2 Arrays was jedoch auch mehr werden können. Gibt es eine möglichkeit, dass er mir alle möglichkeiten bei der Kombination bietet?
Also so:
Array 1 = Apfel, Birne, Banane
Array 2= Gelb, Rot, Grün
Nun hätte ich gerne einen neuen Array mit:
Apfel Gelb
Apfel Rot
Apfel Grün
Birne Gelb
Birne Rot
Birne Grün
Banane ....

Bei 3 oder mehr arrays das selbe.

Wie könnte ich dies am einfachsten lösen?

Gruss und Danke für eure Hilfe.

Koda
Mit Zitat antworten
  #2 (permalink)  
Alt 17-05-2013, 06:46
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Das Zauberwort heißt: Permutation
__________________
Wir werden alle sterben
Mit Zitat antworten
  #3 (permalink)  
Alt 17-05-2013, 07:33
Koda
 Registrierter Benutzer
Links : Onlinestatus : Koda ist offline
Registriert seit: Aug 2010
Beiträge: 105
Koda befindet sich auf einem aufstrebenden Ast
Standard

Hi

Vielen Dank. Aber ist das wirklich das richtige? Ich habe da gestern bereits gesucht und bin auf folgendes Ergebnis gekommen:
Einerseits geht es bei mir ja um mehrere arrays und nicht um einen. Andererseits wenn wir von den drei Zahlen 1, 2 und 3 ausgehen ergeben sich durch die Permutation folgende Möglichkeiten:
1, 3, 2
2, 1, 3
2, 3, 1
3, 1, 2
3, 2, 1
und weitere (Stammt aus einem Beispiel in einem Forum)

Wenn wir nochmals mein Beispiel fertig machen:
Array 1 = Apfel, Birne, Banane
Array 2= Gelb, Rot, Grün
Nun hätte ich gerne einen neuen Array mit:
Apfel Gelb
Apfel Rot
Apfel Grün
Birne Gelb
Birne Rot
Birne Grün
Banane Gelb
Banane Rot
Banane Grün

Gelb Apfel ist dann keine Lösung mehr.

Man könnte es eigentlich mit Produktmerkmalen vergleichen.
Wenn wir hier drei arrays haben:
Array1 (Farbe): Rot, Grün, Blau
Array2 (Grösse): 40, 42, 44
Array3 (Material): Seide, Baumwolle
Wenn ich dann als Kombi "Rot, 40, Seide" erhalte benötige ich nicht auch noch "Seide, Rot, 40"
Die Arrayanzahl ändert sich auch immer

Sorry ist etwas kompliziert geschrieben nehm ich mal an.

Gruss

Koda
Mit Zitat antworten
  #4 (permalink)  
Alt 17-05-2013, 08:05
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Ich denke schon, dass das eine Permutation ist.
Bei der einen Variante werden die Positionen der Elemente vertauscht.
Bei er anderen wird über das mögliche erscheinen permutiert.
Ein Shirt kann eben nur eine Größe haben.


Wenn ich dir hier den Code vorkaue, dann lernst du nix, befürchte ich.
Aber ich mache das trotzdem mal.....


PHP-Code:
<?php
error_reporting
(-1);
ini_set('display_errors'TRUE); 



class 
Perm2Dim implements CountableArrayAccessIterator
{
   private 
$array = array();
   private 
$count 0;
   private 
$pos   0;

   public function 
__construct(Array $array)
   {
     
$array array_values($array); // normalisieren
     
foreach($array as $index => $teilarray)
     {
       if(!
is_array($teilarray))
         throw new 
InvalidArgumentException('Only Arrays allowed',1);
       if(
count($teilarray) < 1)
         throw new 
InvalidArgumentException("Too few Elements in Subarray $index",2);
       
$this->array[$index]['data']  = array_values($teilarray); // normalisieren
       
$this->array[$index]['fence'] = 1;
       
$this->array[$index]['count'] = count($teilarray);
       for(
$i=0;$i<$index;$i++)   $this->array[$i]['fence'] *= $this->array[$index]['count'];
     }
     
$temp 1;
     for (
$i=count($this->array)-1;$i>0;$i--)
     {
       
$temp *= $this->array[$i]['count'];
       
$this->array[$i-1]['fence'] =  $temp;
     }

     
$this->count $this->array[0]['fence']*$this->array[0]['count'];
     if(!
is_int($this->count))
      throw new 
InvalidArgumentException('Too many elements for Integer Count',3);
   }

   public function 
offsetGet($index)
   {
     if(!
$this->offsetExists($index))
       throw new 
InvalidArgumentException('Offset out of Range',4);
     
$result = array();
     foreach(
$this->array as $teilarray)
     {
       
$result[] = $teilarray['data'][floor($index/$teilarray['fence'])];
       
$index    $index $teilarray['fence'];
     }
     return 
$result;
   }

   private function 
has($index)
   {
     return 
$index >= && $index $this->count;
   }

   public function 
offsetExists($index)
   {
     return 
$this->has($index);
   }

   public function 
valid()
   {
     return 
$this->has($this->pos);
   }

   public function 
count()
   {
     return 
$this->count;
   }

   public function 
rewind()
   {
     
$this->pos 0;
   }

   public function 
current()
   {
     return 
$this[$this->pos];
   }

   public function 
key()
   {
     return 
$this->pos;
   }

   public function 
next()
   {
     
$this->pos++;
   }

   public function 
getall()
   {
     return 
$this->array;
   }

   public function 
offsetSet($index,$newval)
   {
     throw new 
Exception('Setter not implemented',5);
   }

   public function 
offsetUnset($index)
   {
     throw new 
Exception('Unsetter not implemented',6);
   }
}


//--------



$farbe    = array('rot','blau','gelb',);
$groesse  = array('36','38','40',);
$material = array('Seide''Baumwolle',);


$permutator = new Perm2Dim(array($groesse,$material,$farbe));

echo 
"Es gibt "count($permutator), " Produkte<br>";
echo 
"Das erste Produkt ist: ",  implode(',',$permutator[0]), " <br>";


foreach(
$permutator as $index => $data)
  echo 
"$index: "implode(',',$data), '<br>';
__________________
Wir werden alle sterben

Geändert von combie (17-05-2013 um 08:29 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 17-05-2013, 12:21
Koda
 Registrierter Benutzer
Links : Onlinestatus : Koda ist offline
Registriert seit: Aug 2010
Beiträge: 105
Koda befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von combie Beitrag anzeigen
Ich denke schon, dass das eine Permutation ist.
Bei der einen Variante werden die Positionen der Elemente vertauscht.
Bei er anderen wird über das mögliche erscheinen permutiert.
Ein Shirt kann eben nur eine Größe haben.


Wenn ich dir hier den Code vorkaue, dann lernst du nix, befürchte ich.
Aber ich mache das trotzdem mal.....
Hallo combie

Was heisst hier nichts lernen? Ich wäre im leben nicht auf sowas komplexes (für mich zumindest) gekommen

Du bist toll vielen Dank

Gruss

Koda
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Alle Arrays automatisch leeren/löschen MoRpH2k2 PHP Developer Forum 9 01-02-2007 13:17
SQL-Statement für alle möglichen Varianten? Maruu SQL / Datenbanken 4 16-12-2006 09:16
Chaos mit mehreren Arrays void.pixel PHP Developer Forum 2 04-07-2006 13:59
$_GET Verschachtelung von mehreren Arrays Loreley PHP Developer Forum 1 19-03-2006 19:13
Befehl um alle Arrays auszugeben? FRAD PHP Developer Forum 6 12-03-2005 16:03

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:01 Uhr.