2014-11-21 45 views
-2

比如我的陣列我如何相同組陣列

Array (
[0] => Array 
    (
     [product_name] => T-Shirt 
     [product_id] => 231 
     [user_id] => 22977 
    ) 

[1] => Array 
    (
     [product_name] => Shirt 
     [product_id] => 220 
     [user_id] => 22977 
    ) 

[2] => Array 
    (
     [product_name] => T-Shirt 
     [product_id] => 226 
     [user_id] => 16916 
    ) 

[3] => Array 
    (
     [product_name] => Bags 
     [product_id] => 230 
     [user_id] => 16916 
    ) 

[4] => Array 
    (
     [product_name] => Hats 
     [product_id] => 233 
     [user_id] => 22977 
    ) 

如何產生這種陣列是

User-Id: 22977 
1/ Hats 
2/ Shirt 
3/ T-Shirt 


User-Id: 16916 
1/ Bags 
2/ T-Shirt 
+0

<默認註釋>你嘗試過什麼 oopbase 2014-11-21 10:33:55

+0

需要PRODUCT_NAME組是什麼? – Kamal 2014-11-21 10:35:20

回答

0
$a = array(); 
$a[] = array("product_name" => "T-Shirt", "product_id" => 231, "user_id" => 22977); 
$a[] = array("product_name" => "Shirt", "product_id" => 220, "user_id" => 22977); 
$a[] = array("product_name" => "T-Shirt", "product_id" => 226, "user_id" => 16916); 
$a[] = array("product_name" => "Bags", "product_id" => 230, "user_id" => 16916); 
$a[] = array("product_name" => "Hats", "product_id" => 233, "user_id" => 22977); 

$return = array(); 

foreach ($a as $key => $value) { 
    $return[$value["user_id"]][] = $value["product_name"]; 
} 

foreach ($return as $key => $value) { 
    echo "User-Id: " . $key . "\r\n"; 
    $i = 0; 

    foreach ($value as $val) { 
    echo ++$i . "/ " . $val . "\r\n"; 
    } 
} 

輸出將是:

User-Id: 22977 
1/ T-Shirt 
2/ Shirt 
3/ Hats 
User-Id: 16916 
1/ T-Shirt 
2/ Bags 
+0

感謝大家一樣的成功, 我想獲得更多信息「product_id」,那麼怎麼樣? 感謝您的關注。 – 2014-11-22 07:27:59

+0

您可以將這些信息連接到$ return [$ value [「user_id」]] [] = $ value [「product_id」]。 「 - 」。 $值[ 「PRODUCT_NAME」] ;.所以,當你打印這些值時,每行都會是「1/22977 - T恤等等 – stuzzo 2014-11-23 13:35:28

0

您可以使用此:

$testarray = array(
     array(
      "product_name" => 'T-Shirt', 
      "product_id" => 231, 
      "user_id" => 22977), 
     array 
      (
      "product_name" => 'Shirt', 
      "product_id" => 220, 
      "user_id" => 22977, 
     ), 
     array 
      (
      "product_name" => 'T-Shirt', 
      "product_id" => 226, 
      "user_id" => 16916, 
     ), 
     array 
      (
      "product_name" => 'Bags', 
      "product_id" => 230, 
      "user_id" => 16916, 
     ), 
     array 
      (
      "product_name" => 'Hats', 
      "product_id" => 233, 
      "user_id" => 22977, 
     ), 
); 
$newArray = array(); 

foreach ($testarray as $subArray) { 
    $newArray[$subArray["user_id"]][] = $subArray['product_name']; 
} 
var_dump ($newArray); 

輸出是:

array 
    22977 => 
    array 
     0 => string 'T-Shirt' (length=7) 
     1 => string 'Shirt' (length=5) 
     2 => string 'Hats' (length=4) 
    16916 => 
    array 
     0 => string 'T-Shirt' (length=7) 
     1 => string 'Bags' (length=4) 
0
<?php 
    //initialize array 
    $array = Array(
     '0' => Array 
      ( 
       'product_name' => 'T-Shirt', 
       'product_id' => 231, 
       'user_id' => 22977 
      ), 

     '1' => Array 
      (
       'product_name' => 'Shirt', 
       'product_id' => 220, 
       'user_id' => 22977 
      ), 

     '2' => Array 
      (
       'product_name' => 'T-Shirt', 
       'product_id' => 226, 
       'user_id' => 16916 
      ), 

     '3' => Array 
      (
       'product_name' => 'Bags', 
       'product_id' => 230, 
       'user_id' => 16916 
      ), 

     '4' => Array 
      (
       'product_name' => 'Hats', 
       'product_id' => 233, 
       'user_id' => 22977 
      ) 
    ); 

    //result will be here 
    $result = array(); 

    foreach ($array as $key => $value) { 
     //check if we have keys group or names to avoid errors 
     if(!isset($value['user_id']) || !isset($value['product_name'])) 
      continue; 

     //make a key in result array if its not exist 
     if(!isset($result[$value['user_id']])) 
     { 
      $result[$value['user_id']] = array($value['product_name']); 
     } 
     else 
     { 
      //add a values to key if it exists 
      $result[$value['user_id']][] = $value['product_name']; 
      //filter same values 
      $result[$value['user_id']] = array_values(array_unique($result[$value['user_id']])); 
     } 
    } 
    echo '<pre>'; 
    print_r($result); 
    echo '</pre>'; 
?>