2016-08-02 99 views
-3

我在这阵混乱的点点..如何创建逗号从嵌套数组分隔列表中的PHP

其实我有这样的

Array 
(
    [0] => stdClass Object 
     (
      [restaurant_id] => 1 
      [food_item] => Chicken Spicy Pizza 
     ) 

    [1] => stdClass Object 
     (
      [restaurant_id] => 1 
      [food_item] => Pepper Chicken Sandwich 
     ) 

    [2] => stdClass Object 
     (
      [restaurant_id] => 6 
      [food_item] => Chicken Tikka Roll 
     ) 

    [3] => stdClass Object 
     (
      [restaurant_id] => 6 
      [food_item] => Grilled Chicken 
     ) 

) 

在这里,我需要一个数组创建的food_item逗号分隔值,并且还必须有一个条件具有相同restaurant_id也合并数组..

即; ..

我的鳍人阵应该是这样..

Array 
(
    [0] => stdClass Object 
     (
      [restaurant_id] => 1 
      [food_item] => Chicken Spicy Pizza,Pepper Chicken Sandwich 
     ) 

    [1] => stdClass Object 
     (
      [restaurant_id] => 6 
      [food_item] => Chicken Tikka Roll,Grilled Chicken 
     ) 
) 

什么建议?!! ...

谢谢!

+0

什么你试过吗?建议根据您的尝试。 –

回答

2

您可以使用array_reduce来完成它

$myArr = array_reduce($myArr, function ($carry, $item) { 
    if (!isset($carry[$item->restaurant_id])) { 
     $carry[$item->restaurant_id] = $item; 
    } else { 
     $carry[$item->restaurant_id]->food_item .= ',' . $item->food_item; 
    } 
    return $carry; 
}, array()); 
+1

谢谢Matei Mihai对你的建议 –

2

让您的实际数组存在一个名为$actualArr的变量中。因此,这里的代码

 $actualArr = array(
     (object) array('restaurant_id' => 1, 'food_item' => 'Chicken Spicy Pizza'), 
     (object) array('restaurant_id' => 1, 'food_item' => 'Pepper Chicken Sandwich'), 
     (object) array('restaurant_id' => 6, 'food_item' => 'Chicken Tikka Roll'), 
     (object) array('restaurant_id' => 6, 'food_item' => 'Grilled Chicken'), 
    ); 



$newArr = array(); 
foreach($actualArr as $value){ 
    $newArr[$value->restaurant_id][] = $value->food_item; 
} 

$finalArr = array(); 

foreach($newArr as $key => $value){ 
    $finalArr[] = (object) array('restaurant_id' => $key, 'food_item' => implode(',', $value)); 
} 
echo '<pre>'; 
print_r($finalArr); 

下面是代码链接

http://pastebin.com/RvjQ3Edj

+0

@ Md。Sahadat Hossain非常感谢你,我终于明白了.. :) –