PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Combination ausloten und keys beibehalten (https://www.php-resource.de/forum/php-developer-forum/106878-combination-ausloten-und-keys-beibehalten.html)

sanktusm 12-02-2020 10:56

Combination ausloten und keys beibehalten
 
Hallo,
ich habe hier ein Funktion, die fast das Problem löst:

PHP-Code:

function getAllCombos($arr) {
    
$combinations = array();
    
$words sizeof($arr);
    
$combos 1;
    for(
$i $words$i 0$i--) {
        
$combos *= $i;
    }
    while(
sizeof($combinations) < $combos) {
    
            
        
shuffle($arr);
        
$combo $arr;
        if(!
in_array($combo$combinations)) {
            
$combinations[] = $combo;
        }
    }
    return 
$combinations;


Diese gibt mir z.B. das aus:

PHP-Code:

array (
  
=> 
  array (
    
=> 2950,
    
=> 3900,
  ),
  
=> 
  array (
    
=> 3900,
    
=> 2950,
  ),


Nun möchte ich aber die Reihenfolgen änder on das die Zuordnung von key und value vertrauscht wird also:

PHP-Code:

array (
  
=> 
  array (
    
=> 2950,
    
=> 3900,
  ),
  
=> 
  array (
    
=> 3900,
    
=> 2950,
  ),


Kann mir jemand einen Tipp geben, wie das gehen kann?

sanktusm 12-02-2020 12:56

Mit diesem Script könnte es besser funktionieren, aber wie...
 
kann ich die Kombination als Array mit beibehaltenen Keys erhalten?

PHP-Code:


<?php 
// Program to print all  
// combination of size r 
// in an array of size n 
  
// The main function that 
// prints all combinations  
// of size r in arr[] of  
// size n. This function  
// mainly uses combinationUtil() 
function printCombination($arr,  
                          
$n$r

    
// A temporary array to  
    // store all combination 
    // one by one 
    
$data = array(); 
  
    
// Print all combination  
    // using temprary array 'data[]' 
    
combinationUtil($arr$data0,  
                    
$n 10$r); 

  
/* arr[] ---> Input Array 
data[] ---> Temporary array to 
            store current combination 
start & end ---> Staring and Ending 
                 indexes in arr[] 
index ---> Current index in data[] 
r ---> Size of a combination  
       to be printed */
function combinationUtil($arr$data$start,  
                         
$end$index$r
                  
{  
    
// Current combination is ready  
    // to be printed, print it 
    
if ($index == $r
    { 
        for (
$j 0$j $r$j++) 
            echo 
$data[$j]; 
        echo 
"\n"
        return; 
    } 
  
    
// replace index with all 
    // possible elements. The 
    // condition "end-i+1 >=  
    // r-index" makes sure that  
    // including one element at 
    // index will make a combination  
    // with remaining elements at  
    // remaining positions 
    
for ($i $start;  
         
$i <= $end &&  
         
$end $i >= $r $index$i++) 
    { 
        
$data[$index] = $arr[$i]; 
        
combinationUtil($arr$data$i 1,  
                        
$end$index 1$r); 
    } 

  
// Driver Code 
$arr = array(12345); 
$r 3
$n sizeof($arr); 
printCombination($arr$n$r); 
  
// This code is contributed by ajit 
?>



Alle Zeitangaben in WEZ +2. Es ist jetzt 17:49 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG