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 (2) Themen-Optionen Thema bewerten
  2 links from elsewhere to this Post. Click to view. #1 (permalink)  
Alt 12-12-2006, 17:05
shihan
 Newbie
Links : Onlinestatus : shihan ist offline
Registriert seit: Jan 2004
Beiträge: 7
shihan ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Funktion] Funktion die ein kartesisches Produkt zwischen Arrays bildet

Hi,

ich möchte mehrere Arrays miteinander verknüpfen und sozusagen das kartesisches Produkt von Ihnen bilden.
Angenommen ich habe ein Array das wie folgt aussieht:
Code:
Array
(
    [0] => Array
        (
            [0] => x1
            [1] => x2
            [2] => x3
            [3] => x4
        )

    [1] => Array
        (
            [0] => y1
            [1] => y2
            [2] => y3
        )

    [2] => Array
        (
            [0] => z1
            [1] => z2
            [2] => z3
        )

)
Jetzt möchte ich die werte so miteinander verknüpfen dass ich rausbekomme:
Code:
x1y1z1
x1y1z2
x1y1z3
x1y2z1
x1y2z2
x1y2z3
[...]
x2y1z1
x2y1z2
[...]
x3y1z1
x3y1z2
[...]
Jetzt liegt es nahe zu sagen, ach 3 Arrays, na dann mach halt drei while Schleifen, durchlauf die Arrays bzw Tupel nacheinander und generier das eben.
Ich möchte aber dass ich beliebig viele Arrays (Tupel) haben kann...

Ich denke mal das geht am besten per Rekursion, aber wie? Tüftel jetzt schon seit heut morgen daran, und komm leider zu keiner Lösung...

Vielen Dank schonmal für jede Antwort.

Grüße

Dommi
Mit Zitat antworten
  #2 (permalink)  
Alt 12-12-2006, 17:11
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
ach 3 Arrays, na dann mach halt drei while Schleifen, durchlauf die Arrays bzw Tupel nacheinander und generier das eben.
Und bei x arrays benutzt du halt x while-schleifen. Die anzahl herauszufinden dürfte ja nicht schwer fallen
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 12-12-2006, 22:20
shihan
 Newbie
Links : Onlinestatus : shihan ist offline
Registriert seit: Jan 2004
Beiträge: 7
shihan ist zur Zeit noch ein unbeschriebenes Blatt
Standard

aber ich weiss doch net vorher wieviele werte ich hab. wenn ich x while schleifen mache, bin ich ja auf diese begrenzt... wenn jetzt ich jetzt mehr als x elemente habe, funktionierts ja nicht mehr.
Mit Zitat antworten
  #4 (permalink)  
Alt 12-12-2006, 22:25
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von shihan
aber ich weiss doch net vorher wieviele werte ich hab. wenn ich x while schleifen mache, bin ich ja auf diese begrenzt...
du hast doch ein array von arrays - richtig?!
über $x=count($master_array) hast du ein dynamisches $x.
Mit Zitat antworten
  #5 (permalink)  
Alt 12-12-2006, 22:32
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

shihan: wozu braucht man das denn?
Mit Zitat antworten
  #6 (permalink)  
Alt 13-12-2006, 09:07
closure
 Master
Links : Onlinestatus : closure ist offline
Registriert seit: Mar 2006
Beiträge: 796
closure ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

auf die schnelle...

PHP-Code:
<?php

$test 
= array(
      array(
'x1','x2','x3','x4'),
      array(
'y1','y2','y3'),
      array(
'z1','z2','z3')
    );

function 
cartesian_helper($sofar,$arr,$pos,$max,&$collector){
      for(
$i 0$i count($arr[$pos]);$i++){
         if(
$pos == $max)
             
$collector[] = $sofar.$arr[$pos][$i];
         else
              
cartesian_helper($sofar.$arr[$pos][$i],$arr,$pos+1,$max,$collector);
      }
}

function 
cartesian($arr){
    
$bucket = array();
    
cartesian_helper('',$arr,0,count($arr)-1,$bucket);
    return 
$bucket;
}

print_r(cartesian($test));

?>
Ausgabe:
Code:
Array
(
    [0] => x1y1z1
    [1] => x1y1z2
    [2] => x1y1z3
    [3] => x1y2z1
    [4] => x1y2z2
    [5] => x1y2z3
    [6] => x1y3z1
    [7] => x1y3z2
    [8] => x1y3z3
    [9] => x2y1z1
    [10] => x2y1z2
    [11] => x2y1z3
    [12] => x2y2z1
    [13] => x2y2z2
    [14] => x2y2z3
    [15] => x2y3z1
    [16] => x2y3z2
    [17] => x2y3z3
    [18] => x3y1z1
    [19] => x3y1z2
    [20] => x3y1z3
    [21] => x3y2z1
    [22] => x3y2z2
    [23] => x3y2z3
    [24] => x3y3z1
    [25] => x3y3z2
    [26] => x3y3z3
    [27] => x4y1z1
    [28] => x4y1z2
    [29] => x4y1z3
    [30] => x4y2z1
    [31] => x4y2z2
    [32] => x4y2z3
    [33] => x4y3z1
    [34] => x4y3z2
    [35] => x4y3z3
)
__________________
(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")
Mit Zitat antworten
Antwort

Lesezeichen


LinkBacks (?)
LinkBack to this Thread: https://www.php-resource.de/forum/php-developer-forum/79158-funktion-funktion-die-ein-kartesisches-produkt-zwischen-arrays-bildet.html
Erstellt von For Type Datum
Kreuzprodukt (Matrix?) eines mehrdimensionalen Arrays | tutorials.de - User helfen Usern This thread Refback 18-05-2014 08:22
Kreuzprodukt (Matrix?) eines mehrdimensionalen Arrays @ PHP - tutorials.de: Tutorial, Forum, Anleitung & Hilfe This thread Refback 14-02-2013 11:17

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

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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

Newsmanager

Der Newsmanager ist ein Newssystem und Newsletter in einem. Mit WYSIWYG Editor und E-Mail import aus einer bestehenden MySql Datenbank sowie dynamische Kategorien / Themen Filter.

11.09.2019 Stephan_1972 | Kategorie: PHP/ News
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

11.09.2019 Stephan_1972 | Kategorie: PHP/ Webservice
ContentLion - Open Source CMS ansehen ContentLion - Open Source CMS

ContentLion ist ein in PHP geschriebenes CMS, bei dem man Seiten, Einstellungen usw. in Ordnern lagern kann

22.08.2019 stevieswebsite2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:55 Uhr.