2010-06-29 92 views
0

我怎么能低于PHP处理阵列问题

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 
     ) 

) 

的数组转换成一个像这样的

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

此代码

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;      
    } 

打印出

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

$ result是上面的第一个数组片段。这很接近,但不是那样。该生产线

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

无助的时刻,但我认为这是沿着这些线路,我需要从卷省略“红,黑,绿”的东西。

回答

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

创建一个遍历数组的函数,生成你想要的数组类型。没有内建的方法。

+0

这就是我所做的,但还没有那么... ... – stef 2010-06-29 10:26:39