Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Jeden Wert eines Arrays mit jedem multiplizieren [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Jeden Wert eines Arrays mit jedem multiplizieren


 
francosdad
10-09-2009, 23:17 
 
Hallo,

ich brauch mal einen kleinen Denkanstoß, denn ich möchte folgenden tun:

Array
(
[0] => Array
(
[0] => eins
[1] => zwei
[2] => drei
)

[1] => Array
(
[0] => one
[1] => two
[2] => three
)

[2] => Array
(
[0] => alpha
[1] => beta
[2] => omega
)

)

Jetzt möchte ich jedes Element des Array[0] mit jedem Element des Array[1], sowie des Array[2] assozzieren.

Beispielsweise:
eins one alpha
eins one beta
eins one omega
eins two alpha
eins two beta
... usw.

Das ganze soll natürlich (damit es schwer wird) dynamisch sein, sonst füge ich das ganze in eine Schleife ein:

foreach ($array[0] = $value) {
foreach ($array[1] = $value1) {
foreach ($array[2] = $value2) {
}
}
}

Wie könnte ich aber die Schleife dynamisch gestalten, also abhängig von der Länge des Array? Da hab ich noch keine Idee?

Als Funktion, die sich selbst aufruft? Aber wie?

Danke für eure Anregungen, Grüße Michael.

 
XGremliN
10-09-2009, 23:30 
 
was willst du denn damit bezwecken?

 
francosdad
10-09-2009, 23:47 
 
Ich möchte Wortkombinationen erschaffen.

 
AmicaNoctis
10-09-2009, 23:47 
 
Hallo Michael,

da dein Kreuzprodukt dem Assoziativgesetz unterliegt, kannst du das ganz leicht lösen:

Du kreuzt die ersten beiden Arrays A1 und A2 und erhältst das Ergebnis E1. Das kreuzt du mit A3 und erhältst E2. Dann kreuzt du immer E[n-2] mit A[n] und erhältst E[n-1].

Gruß,

Anja

 
combie
11-09-2009, 00:02 
 
function perm_2_dim(Array $array)
{

$result = array();
foreach($array as $subarray)
{
$zwischenlager = array();
if(empty($result))
foreach($subarray as $element)
$zwischenlager[] = array($element);
else
foreach($result as $alte)
foreach($subarray as $element)
$zwischenlager[] = array_merge($alte,array($element));
$result = $zwischenlager;
}
return $result;
}

 
combie
11-09-2009, 00:04 
 
Das Sternchen musst du dir weg denken..
Kann nicht editieren, davon werden es nur mehr...

 
Kropff
11-09-2009, 14:37 
 
Das Sternchen musst du dir weg denken..
Kann nicht editieren, davon werden es nur mehr...
Weg ist es.
Peter

 
francosdad
11-09-2009, 15:00 
 
Hat übrigens super Funktioniert.

Vielen Dank.
Grüße Michael

:danke:


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:30 Uhr.