2014-07-18 74 views
0

下面給出的是我的陣列結構插入到多維數組中的PHP for循環

Array 
(
[0] => Array 
    (
     [product_id] => 59 
     [product_name] => Samsung Champ DUOS E2652 
     [product_price] => 4439 
     [sub_cat_name] => Samsung 
     [sub_cat_url] => samsung 
     [image] => samsung-champ-duos-e2652---1414801404364308.jpg 
     [currency] => ₹ 
    ) 

[1] => Array 
    (
     [product_id] => 195 
     [product_name] => Samsung Galaxy Tab 4 7.0 
     [product_price] => 17847 
     [sub_cat_name] => Samsung 
     [sub_cat_url] => samsung 
     [image] => galaxy-tab-4-7-0---1715601405057269.png 
     [currency] => ₹ 
    ) 

[2] => Array 
    (
     [product_id] => 284 
     [product_name] => Samsung Galaxy Tab 3 Lite 7.0 
     [product_price] => 18000 
     [sub_cat_name] => Samsung 
     [sub_cat_url] => samsung 
     [image] => galaxy-tab-3-lite-7-0---1590061405576878.png 
     [currency] => ₹ 
    ) 

[3] => Array 
    (
     [product_id] => 19 
     [product_name] => Samsung Galaxy Star 
     [product_price] => 4833 
     [sub_cat_name] => Samsung 
     [sub_cat_url] => samsung 
     [image] => feature-img144811404109906.jpg 
     [currency] => ₹ 
    ) 

[4] => Array 
    (
     [product_id] => 186 
     [product_name] => Samsung Galaxy S5 Active 
     [product_price] => 31922 
     [sub_cat_name] => Samsung 
     [sub_cat_url] => samsung 
     [image] => galaxy-s5-active368091404989896.png 
     [currency] => ₹ 
    ) 

) 

我想基於sub_cat_url這個數組像下面

array 
(
[0] => samsung 
    [0] => Array 
    (
     [product_id] => 186 
     [product_name] => Samsung Galaxy S5 Active 
     [product_price] => 31922 
     [sub_cat_name] => Samsung 
     [sub_cat_url] => samsung 
     [image] => galaxy-s5-active368091404989896.png 
     [currency] => ₹ 
    ) 
    [1] => Array 
    (
     [product_id] => 284 
     [product_name] => Samsung Galaxy Tab 3 Lite 7.0 
     [product_price] => 18000 
     [sub_cat_name] => Samsung 
     [sub_cat_url] => samsung 
     [image] => galaxy-tab-3-lite-7-0---1590061405576878.png 
     [currency] => ₹ 
    ) 
) 

爲泰德我排序寫了如下的代碼。

for($i = 0; $i < $count; $i++){ 
      if($i == 0){ 
       $search_array[$i] = $search_data[$i]["sub_cat_name"]; 
       $search_array[$i] = $search_data[$i]["product_name"]; 
       $j += 1; 
      } 
      else if($search_data[$i]["sub_cat_url"] !== $search_data[$i]["sub_cat_url"]){ 
       $search_array[$i] = array($search_data[$i]["sub_cat_name"]); 
       $search_array[$i] = array($search_data[$i]["product_name"]); 
       $j += 1; 
      } 
      else if($search_data[$i]["sub_cat_url"] === $search_data[$i]["sub_cat_url"]){ 
       $search_array[$i] = array($search_data[$i]["product_name"]); 
       $j += 1; 
      } 
     } 

但它沒有效果。我也嘗試使用inner for循環。它也沒有給我實際的結果。有人能請我寫出正確的循環語句嗎? 預先感謝您

+1

你要得到(你沒有提供的PHP格式的數據)產品是通過sub_cat_url字段過濾的? – TBI

+0

是啊..確實..忍者...忘了添加問題..現在編輯 – Arun

+1

可能的重複:http://stackoverflow.com/questions/24724430/php-array-chunk-split-based-on-variable – hindmost

回答

1

如果我明白你也可以這樣:

$out = array(); 

$map = array(); 

foreach ($array as $k => $v) { 
    $url = $v['sub_cat_url']; 

    if (!isset($map[$url])) { 
    $map[$url] = count($out); 
    } 
    $out[$map[$url]][$url][$k] = $v; // or $out[$map[$url]][$url][] = $v; 

} 

但是我沒有測試它

+0

非常感謝你的幫助...它工作100%,因爲我預期... :) – Arun