I持って次のコード:PHP - mysqlの結果の配列をローカル変数配列に変換する?
$catsQuery = "
SELECT id, category
FROM categories
ORDER BY category
";
$catsSql = mysqli_query($link, $catsQuery);
$cats = array();
mysqli_data_seek($catsSql, 0);
while($rowCats = mysqli_fetch_assoc($catsSql))
{
$cats[$rowCats['id']]['catName'] = $rowCats['category'];
}
foreach ($cats as $catKey => $cat['$catName'])
{
$pageContent .= "<p>$catKey | $catName</p>
";
}
2列id
とcategory
はこのようにデータが含まれている:
- ID |カテゴリ
- 1 |靴
- 2 |シャツ
- 3 |私がやりたいどのような帽子
は、whileループではcats
ローカル配列は、各列の配列のキーになるように生成されるというローカル変数にテーブルcategories
内のすべての行を回していますカテゴリIDが割り当てられ、キーにカテゴリ名が割り当てられます。 var_dump($cats)
は、説明したように各行が変数に追加されたことを示しています。
foreachでは、何らかの理由で各IDが新しい行として返されましたが、カテゴリの名前は最後の可能なカテゴリ名としてすべてのキーに表示されます。
なぜそれが変数のダンプがデータの1セットを示していますが、その内容のこのように印刷されたループは、この奇妙なしゃっくりを示したということでしょうか?このよう
:
- 1 |帽子
- 2 |帽子
- 3 |帽子
誰かが私がこれを引き起こすことに間違っていることにいくつかの光を当てることができれば、それは非常に感謝しています。
ありがとうございました!
EDIT:
以下の回答の結果として作成された機能コード:
//categories to local array
$catsQuery = "
SELECT id, category, catDirPath
FROM categories
ORDER BY category
";
$catsSql = mysqli_query($link, $catsQuery);
$cats = array();
mysqli_data_seek($catsSql, 0);
while($rowCats = mysqli_fetch_assoc($catsSql))
{
$cats[$rowCats['id']]['catName'] = $rowCats['category'];
$cats[$rowCats['id']]['catPath'] = $rowCats['catDirPath'];
}
// subCats to local array
$subsQuery = "
SELECT id, subCat, category_id, subDirPath
FROM subCats, sub_categories
WHERE subCats.id = sub_categories.sub_id
ORDER BY category_id
";
$subsSql = mysqli_query($link, $subsQuery);
$subs = array();
mysqli_data_seek($subsSql, 0);
while($rowSubs = mysqli_fetch_assoc($subsSql))
{
$subs[$rowSubs['id']]['subName'] = $rowSubs['subCat'];
$subs[$rowSubs['id']]['catId'] = $rowSubs['category_id'];
$subs[$rowSubs['id']]['subPath'] = $rowSubs['subDirPath'];
}
// loop through categories and if subs exist, add to resultset and display
foreach ($cats as $catId => $cat)
{
$pageContent .= "
<div style='margin-bottom: 10px; border black solid 1px;'>
<ul>
<li style='list-style-type: none; margin-bottom: 5px;'><a href='$docPath/category/{$cat['catPath']}/'>{$cat['catName']}</a></li>
";
foreach ($subs as $subId => $sub)
{
if($sub['catId'] == $catId)
{
$pageContent .= "
<li style='list-style-type: circle; padding-left: 15px; font-size: 70%;'><a href='$docPath/category/{$cat['catPath']}/{$sub['subPath']}/'>{$sub['subName']}</a></li>
";
}
}
$pageContent .= "
</ul>
</div>
";
}
おかげで、関心の酒のうち、PHPはこれを実行することができます。このラインはあなたがおそらくそれを変更する必要があります問題
を引き起こしていると思われます。 = "
$ catKey | {$ cat ['catName']}
"; –うん、それは可能だけど、それはそんなに読めなくなって、それにあまりにも多くの "黒い魔法"を持っている。私のコードはきれいで予測可能です –
あなたの答えの結果として私のopに追加されたコードを見てください:)スケルトンはそこにあり、私は今それで動作することができます!どうもありがとうございます!! –