2012-02-15 8 views
4

У меня есть таблица Mysql, которая содержит столбец данных JSON и столбец с количеством. Цель состоит в том, чтобы извлечь данные JSON и сумму и построить массив в цикле foreach. Вот мой код:Создать массив из Foreach

$sql = "SELECT `Amount`, `NewObject` FROM `mb_cart` WHERE `MyID` = '$id'"; 
$data_main = $db->query($sql); 

Вот мое заявление, что я использую для создания массива:

foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
    $cart = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
} 

Однако, когда я запускаю это, я только возвращающийся только первый набор записи и сумма пуста, но данные JSON перечислены. Цените любое понимание, которое любой хочет поделиться.

+0

Что делает запрос '$ db-> ($ sql);' return? Массив или итератор? См. Также ['array_push'] (http://php.net/array_push) и заметку там, [' foreach'] (http://php.net/foreach) со ссылкой и ['iterator_to_array'] (http : //php.net/iterator_to_array). – hakre

ответ

22

Вам необходимо добавить [] в массив $cart. При каждом запуске foreach вы переписываете переменную $ cart.

что-то вроде так будет работать:

foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
     $cart[] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
    } 

Или, если вы хотите ключ массива, совпадающее с идентификатором каждой строки:

Примечание: Вам нужно будет установить переменную $ ID как-то выше IE: SELECT id, amount также обратите внимание, что у вас могут возникнуть проблемы, если целое число от id не является уникальным .. например (1,1,2,3,4,5,6) он будет показывать только последний идентификатор 1 вместо оба (поскольку ключевые слова являются дубликатами).

foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
     $cart[$id] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
    } 
+0

Я получаю $ names [$ row ["nombre"]] = array ('id' => $ row ["id"]); ------- Результат ---------> key = Selección perfil, value = Array, почему в value get array? – delive

3
$cart = array(); 

foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
    $cart[] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
} 

print_r($cart); 
3

Попробуйте это:

$cart=array(); 
foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
     $cart[] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
    } 

Вы угощали телегу в качестве переменной вместо массива

7

Ваша переменная $cart будет перезапись в каждом цикле, потому что вы звоните array() каждый время.

Вместо объявить массив вне цикла, и просто добавить значения к нему по мере необходимости:

$cart = array(); 
foreach ($data_main as $transaction_main) { 
    $json_decoded = json_decode($transaction_main); 
    $cart[] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
} 
0

способ приблизиться к этому сначала создать переменную $cart = array(); , а затем сделать foreach(); я написал код ниже, пожалуйста, пройдите через него

foreach($data_main as $transaction_main){ 
    $json_decoded = json_decoded($transaction_main); 
    $cart[]=array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName); 
} 
Смежные вопросы