Я пытаюсь создать ассоциативный массив в PHP.Странное поведение ассоциативного массива в PHP
Идея состоит в том, чтобы хранить «Item Id» в качестве ключа массива и общую сумму расходов на этот идентификатор элемента в качестве значения.
Я использую следующий код, чтобы получить данные из моих двух отдельных таблиц MYSQL, один из которых содержит информацию о товаре и та, которая содержит список расходов.
// GET ITEM DATA FROM DB
$getItemData = mysql_query("SELECT * FROM items;");
// CREATE ARRAY
$orderItemsBySpend = array();
// LOOP THROUGH ITEMS AND CALCULATE SPEND IN LAST 30 DAYS
while($itemData = mysql_fetch_assoc($getItemData)){
$getItemExpenses = mysql_query("
SELECT SUM(cost)
AS productExpenses
FROM expenses
WHERE itemId = $itemData[id]
AND date BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW();");
$itemExpenses = mysql_fetch_assoc($getItemExpenses);
// SET TOTAL SPEND VARIABLE
$totalProductSpend = $itemExpenses['productExpenses'];
// SET ITEM ID VARIABLE
$itemId = $itemData[id];
// ADD KEY AND VALUE TO ARRAY
$orderItemsBySpend[$itemId] = $totalProductSpend;
// PRINT ARRAY FOR TESTING PURPOSES
print_r($orderItemsBySpend);
}
К сожалению, вместо того, чтобы получить что-то вроде этого, как я хотел бы ожидать (и надеюсь на!)
Примечание 0.00 значения являются только сводится к тому, есть только ограниченные данные в таблице расходов.
Array (
[1] => 14.01
[2] => 0.00
[3] => 0.00
[4] => 0.00
[5] => 0.00
[6] => 20.24
[7] => 0.00
[8] => 0.00
[9] => 0.00
)
Вместо этого я получаю это:
Array (
[0] => 14.01
)
Array (
[0] => 14.01
[1] => 0.00
)
Array (
[0] => 14.01
[1] => 0.00
[2] => 0.00
)
Array (
[0] => 14.01
[1] => 0.00
[2] => 0.00
[3] => 0.00
)
etc.
Мой вопрос: Почему это странно «инкрементальный картина» массивов создается? И почему ключ массива не задан как идентификатор элемента?
Первый массив должен иметь ключ от 1 (первый элемент Id), а не 0.
Все советы оценили!
Thanks,
Bruce.
_ «Почему этот странный« инкрементный шаблон »создаваемых массивов? «_ - просто вы выводите массив в каждой итерации цикла ...? – CBroe
И вообще, запросы базы данных в циклах считаются очень плохими идеями, с точки зрения производительности. Используйте один запрос, который вместо этого использует GROUP BY. – CBroe