我對標題感到抱歉,但我不知道如何在標題上解釋它。所以,這是我的情況。
我有一張桌子
| ID | 類別 | 子類 |
|---|---|---|
| 1 | 1 | 蘋果 |
| 2 | 1 | 橘子 |
| 3 | 2 | 車 |
| 4 | 2 | 摩托車 |
我想要做的是,做一些回圈,輸出在 PHP 中是這樣的
<script type="text/javascript">
const subkategoris = {
"1":[
{value:1,desc:"Apple"},
{value:2,desc:"Orange"},
],
"2":[
{value:3,desc:"Car"},
{value:4,desc:"Motorcycle"},
],
...etc
</script>
我已經嘗試回圈它但是,我得到的是這樣的
<script type="text/javascript">
const subkategoris = {
"1":[
{value:1,desc:"Apple"},
],
"1":[
{value:2,desc:"Orange"},
],
"2":[
{value:3,desc:"Car"},
],
"2":[
{value:4,desc:"Motorcycle"},
...etc
</script>
有人可以幫助我嗎?
uj5u.com熱心網友回復:
目前尚不清楚您想要實作什么以及使用什么語言。您需要 PHP 解決方案,但需要 JS 中的所有代碼。
這是我理解您正在嘗試做的 JS 解決方案
const initialData = [
{
id: 1,
category: 1,
subCategory: 'Apple'
},{
id: 2,
category: 1,
subCategory: 'Orange'
},{
id: 3,
category: 2,
subCategory: 'Car'
},{
id: 4,
category: 2,
subCategory: 'Motorcycle'
},
]
const groupedByCategory = initialData.reduce((res, {id, category, subCategory}) => {
const existing = res[category] || []
return {
...res,
[category] : [...existing, {value: id, desc: subCategory}]
}
}, {});
console.log(groupedByCategory)
您可以使用 array_reduce 在 PHP 中執行相同的操作
$data = [...]; // array with the same payload of the js
$result = array_reduce($data, function($res, $item){
$category = $item['category'];
$existing = $res[$category] ?? [];
$existing[] = ['value' => $item['id'], 'desc' => $item['subCategory']];
$res[$category] = $existing;
return $res;
}, []);
uj5u.com熱心網友回復:
由于您似乎使用 PHP 從 SQL DB 獲取資料,因此您的請求可以完成這項作業,而無需使用 PHP 或 JS 回圈任何內容。
你能試試這樣的嗎?
$select = $conn->prepare(
"SELECT
DISTINCT category,
id AS subkategoris_value,
subcategory AS subkategoris_desc
FROM sometable"
);
$select->execute([]);
$result = $select->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_GROUP);
在這里,將sometable替換為您的表的名稱,并將$conn替換為您與 MySQL DB 的連接。
您的輸出將直接符合預期。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/343474.html
標籤:javascript php 查询 mysql foreach
