在php for循环中插入多维数组

在php for循环中插入多维数组,php,arrays,for-loop,multidimensional-array,Php,Arrays,For Loop,Multidimensional Array,下面是我的数组结构 Array ( [0] => Array ( [product_id] => 59 [product_name] => Samsung Champ DUOS E2652 [product_price] => 4439 [sub_cat_name] => Samsung [sub_cat_url] => samsung [image] =

下面是我的数组结构

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\u cat\u 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;
            }
        }
($i=0;$i<$count;$i++)的
{
如果($i==0){
$search_数组[$i]=$search_数据[$i][“子目录名称”];
$search_数组[$i]=$search_数据[$i][“产品名称”];
$j+=1;
}
else if($search_data[$i][“sub_cat_url”]!==$search_data[$i][“sub_cat_url”])){
$search_array[$i]=数组($search_data[$i][“sub_cat_name]”);
$search_array[$i]=数组($search_data[$i][“product_name]”);
$j+=1;
}
否则如果($search_data[$i][“sub_cat_url”]===$search_data[$i][“sub_cat_url”]){
$search_array[$i]=数组($search_data[$i][“product_name]”);
$j+=1;
}
}
但效果并不好。我也尝试过使用内部for循环。它也没有给我实际的结果。有人能帮我写一个正确的循环语句吗?
提前谢谢你

如果我能很好地理解你的话,这应该可以:

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

}

但是我还没有测试过它(您没有提供PHP格式的数据)

您想通过sub_cat_url字段过滤产品吗?是的..没错..抱歉..忘记添加问题..现在编辑可能的重复:您不能通过传递子类别直接从数据库中获取吗?或者你仍然需要它的编码我需要它的编码…非常感谢你的帮助…它的工作100%如我所料…:)