2010-06-29 10 views
0

Comment puis-je convertir le tableau ci-dessoustableau process PHP question

Array 
(
    [0] => stdClass Object 
     (
      [name] => color 
      [value] => red 
     ) 

    [1] => stdClass Object 
     (
      [name] => color 
      [value] => black 
     ) 

    [2] => stdClass Object 
     (
      [name] => color 
      [value] => green 
     ) 

    [3] => stdClass Object 
     (
      [name] => volume 
      [value] => 15L 
     ) 

    [4] => stdClass Object 
     (
      [name] => volume 
      [value] => 25L 
     ) 

) 

Pour un comme ça

Array(
    'colors' => red, black, green 
    'volumes' => 15L, 25L 
) 

Ce code

foreach($result as $r) 
    {   
     if($mem !== $r->name) unset($attribs[$r->name . "s"]);    
     $string .= $r->value . ", ";      
     $attribs[$r->name . "s"] = reduce_multiples($string, ", ", TRUE); //removes the last comma from the string   
     $mem = $r->name;      
    } 

Imprime

Array 
(
    [colors] => red, black, green 
    [volumes] => red, black, green, 15L, 25L 
) 

$ result est le premier extrait de tableau ci-dessus. C'est proche mais pas tout à fait là. La ligne

if($mem !== $r->name) unset($attribs[$r->name . "s"]); 

ne fait rien pour le moment mais je pense qu'il ya quelque chose dans ce sens que je dois omettre le « rouge, noir, vert » des volumes.

Répondre

1
$newArray = array(); 
foreach($oldArray as $obj) { 
    $name = $obj->name.'s'; 
    $value = $obj->value; 
    if array_key_exists($name,$newArray) { 
     $newArray[$name] .= ', '.$value; 
    } else { 
     $newArray[$name] = $value; 
    } 
} 
var_dump($newArray); 
2

Créez une fonction qui itère dans le tableau, en générant le type de tableau souhaité. Il n'y a pas de méthode intégrée.

+0

C'est ce que j'ai fait mais pas encore là ... – stef