2012-04-20 2 views
1

total noob ici. J'ai un tableau qui ressemble à:array_slice - comment cela se fait-il que cela ne fonctionne pas dans foreach

Array 
(
    [15] => Array 
     (
     [0] => Array 
      (
       [id] => 5216 
       [name] => Grow your own Irish Shamrock gifts set 
       [ordered] => 473 
       [image] => FunShamrockPot.jpg 
      ) 

     [1] => Array 
      (
       [id] => 5217 
       [name] => Irish Shamrock Seeds 
       [ordered] => 357 
       [image] => FunShamrockSeed.jpg 
      ) 

     [2] => Array 
      (
       [id] => 5759 
       [name] => Ireland Fleece with Shamrock Badge 
       [ordered] => 1 
       [image] => IrelandFleeceShamrocks.jpg 
      ) 

    ) 

    [31] => Array 
     (
     [0] => Array 
      (
       [id] => 5081 
       [name] => Tartan Guinness Flat Cap 
       [ordered] => 356 
       [image] => GuinnessTartanFlatCap.jpg 
      ) 

     [1] => Array 
      (
       [id] => 4894 
       [name] => Black signature emblem Guinness baseball hat 
       [ordered] => 176 
       [image] => GuinnessSigBBHat.jpg 
      ) 

Le tableau est appelé produits $ et je suis en train de simplement imprimer les cinq premiers tableaux dans chaque tableau haut (si cela fait sens) en d'autres termes, un tableau [15] < - cinq premiers tableaux de moins de 15, tableau [31] < - 5 premiers tableaux ici.

le code que je suis en train est:

foreach($products as $key=>$value) { 
    array_slice($value, 0, 5); 
    foreach($value as $product) { 
     echo $product['name'] . '<br/>'; 
    } 
    echo '<br/>'; 
} 

Je ne peux pas comprendre pourquoi array_slice ne fonctionnera pas, qu'est-ce que je fais mal?

Répondre

2

Le problème est que array_slice ne modifie pas le tableau d'entrée, vous avez besoin de la valeur de retour :

foreach($products as $key=>$value) { 
    $sliced = array_slice($value, 0, 5); 
    foreach($sliced as $product) { 
     echo $product['name'] . '<br/>'; 
    } 
    echo '<br/>'; 
} 
0
foreach($products as $key=>$value) { 
    $i = 0; 
    foreach($value as $product) { 
     if($i <5) { 
     echo $product['name'] . '<br/>'; 
     $i++; 
     } else { 
     break; 
     } 
    } 
    echo '<br/>'; 
} 

modifier pour répondre à pourquoi le travail array_slice na pas

vous auriez besoin d'avoir fait

$newarray = array_slice($value, 0, 5); 
    foreach($newarray as $product) { 
    echo $product['name'] . '<br/>'; 
} 
+0

Merci! Comment se fait-il que array_slice ne fonctionne pas? –

+0

@hugo l'hippopotame voir ma modification – squarephoenix