在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%如我所料…:)