2013-08-01 17 views
5

non sono sicuro se c'è un qualche tipo di funzione PHP che mi aiuterà a fare questo abbastanza semplice o no. Ho pensato di chiedere.PHP partita i dati in una matrice

Diciamo che ho 5 prodotti [prod1, prod2, prod3, prod4, prod5]

tutti questi prodotti sono legati alla vicenda, quindi ho bisogno di arrivare a qualcosa di simile:

prod1, prod2, prod3, prod4, prod5

prod2, prod3, prod4, prod5, prod1

prod3, prod4, prod5, prod1, prod2

prod4, prod5, prod1, prod2, prod3

prod5, prod1, prod2, prod3, prod4

eco, Salva come variabili, non importa a me.

Nel mio esempio ho detto 5, ma in realtà ci potrebbe essere un qualsiasi numero di prodotti. C'è una funzione che fa questo automaticamente fino a n prodotti ?? Non so nemmeno come chiamarlo davvero, quindi li abbino insieme.

risposta

0

Un'altra soluzione:

$array = array('$prod1', '$prod2', '$prod3', '$prod4', '$prod5'); 

$result = array(); 
for ($i = 0; $i < count($array); $i++) { 
    $result[] = array_merge(array_slice($array, $i), array_slice($array, 0, $i) ); 
} 
print_r($result); 

uscita:

Array 
(
    [0] => Array 
     (
      [0] => $prod1 
      [1] => $prod2 
      [2] => $prod3 
      [3] => $prod4 
      [4] => $prod5 
     ) 

    [1] => Array 
     (
      [0] => $prod2 
      [1] => $prod3 
      [2] => $prod4 
      [3] => $prod5 
      [4] => $prod1 
     ) 

    [2] => Array 
     (
      [0] => $prod3 
      [1] => $prod4 
      [2] => $prod5 
      [3] => $prod1 
      [4] => $prod2 
     ) 

    [3] => Array 
     (
      [0] => $prod4 
      [1] => $prod5 
      [2] => $prod1 
      [3] => $prod2 
      [4] => $prod3 
     ) 

    [4] => Array 
     (
      [0] => $prod5 
      [1] => $prod1 
      [2] => $prod2 
      [3] => $prod3 
      [4] => $prod4 
     ) 

) 
+0

come posso dare un nome ad ogni array nidificato? – thindery

+0

Come esattamente. Mostrami per esempio –

+0

Scusa per la confusione .. Come potrebbe funzionare se l'array iniziale '$ array = array ('$ prod1', '$ prod2', '$ prod3', '$ prod4', '$ prod5') ; 'era multidiemsnsional:' $ array = array (array ('prod1a, prod2a, prod3'), array ('prod4, prod5, prod6'), array ('prod7, prod8, prod9')); 'non lo faccio vedere come rendere il codice di tuffo giù uno strato di più in modo che lo fa l'abbinamento di configurazione solo per i prodotti che rientrano nella gamma annidata – thindery

8

Si può fare questo:

$arr = array($prod1, $prod2, $prod3, $prod4, $prod5); 

for ($i = 0; $i < count($arr); $i++) { 
    array_push($arr, array_shift($arr)); 
    print_r($arr); 
} 
+2

semplice e funzionale ... mi piace. – Orangepill

0

Non sono sicuro ho capito cosa si vuole esattamente, ma considerando che i dati originali è una stringa, si può semplicemente chiamare 'esplodere' (http://php.net/manual/en/function.explode.php) o simili per accenderlo in un array.

0

Prova questo:

$products = array(); 
    $line= array("prod1", "prod2", "prod3", "prod4", "prod5"); 
    array_push($products , $line); 
    print_r($products); 
Problemi correlati