您好,我需要一些使用explode和array_combine形成陣列的幫助。使用PHP array_combine&爆炸與多維數組
我想結合使用爆炸的結果下面的兩個數組(qty和fooddesc)。我試圖使數組數組的關鍵和fooddesc數組使用數組結合的值,但無法獲得正確的語法,所以我中止了。
我似乎無法弄清楚如何做到這一點。可能我只需要改變查詢數據的方式,所以我根本不需要使用爆炸?這讓我瘋狂。
我正在組成數組來包含n餐包含食物數量和它們的描述的膳食計劃,以便我可以很容易地將數據從數組中排除到我的html中。
這裏是我的代碼和陣列輸出:
// Begin Meal Plan
$sql = "SELECT notes, mealdesc, optdesc, group_concat(qty) as qty, group_concat(fooddesc SEPARATOR ',') as fooddesc
FROM plan p
INNER JOIN mealplan mp
ON mp.planid = p.id
INNER JOIN meal m
ON m.id = mp.mealid
INNER JOIN foodmeal fm
ON fm.mealid = m.id
INNER JOIN food f
ON f.id = fm.foodid
where userid = 2
GROUP by mealdesc
order by mealdesc";
$result = mysqli_query($link, $sql);
if (!$result)
{
echo 'Error';
exit();
}
// Fetch meal data
while($row = mysqli_fetch_array($result)){
$meals[$row['mealdesc']] = array('optdesc' => $row['optdesc'], 'qty' => explode(",", $row['qty']), 'fooddesc' => explode(",", $row['fooddesc']));
$notes = $row['notes'];
}
// End Meal Plan
這裏是陣列,它產生:(我修剪這表明僅僅是第一餐儘量簡短)
Array
(
[Meal 1] => Array
(
[optdesc] => upon awakening
[qty] => Array
(
[0] => 1
[1] => 6
[2] => 1/2 cup
[3] => 2 slices
[4] => 1 piece
[5] => 1 cup
)
[fooddesc] => Array
(
[0] => egg
[1] => egg whites
[2] => oatmeal
[3] => wheat toast
[4] => fruit
[5] => berries
)
)
編輯 再次嘗試array_combine並使用count和for循環來組合qty和food desc,然後使用unset刪除舊的qty/fooddesc數組。
我不知道這是否是最好的解決方案,但它的工作原理。 :)認爲我只是回答了我自己的問題。
// Fetch meal data
while($row = mysqli_fetch_array($result)){
$meals[$row['mealdesc']] = array('optdesc' => $row['optdesc'], 'qty' => explode(",", $row['qty']), 'fooddesc' => explode(",", $row['fooddesc']));
$notes = $row['notes'];
}
$j = count($meals);
for($i = 1; $i <= $j ; $i++)
{
$meals['Meal '.$i][food] = array_combine($meals['Meal '.$i]['qty'], $meals['Meal '.$i]['fooddesc']);
unset($meals['Meal '.$i]['qty']);
unset($meals['Meal '.$i]['fooddesc']);
}
// End Meal Plan
這給了我:
Array
(
[Meal 1] => Array
(
[optdesc] => upon awakening
[food] => Array
(
[1] => egg
[6] => egg whites
[1/2 cup] => oatmeal
[2 slices] => wheat toast
[1 piece] => fruit
[1 cup] => berries
)
)
[Meal 2] => Array
(
[optdesc] => 3 hours later
[food] =>
)
感謝阿卡姆。如果我不知道確切的吃飯次數,我該怎麼做?每餐計劃可能會有所不同。有些可能有4個,有些可能有8個。 – guyinjersey 2013-02-13 14:50:42