MySQL в модели
public function dailymovedate($datee,$dateee)
{
header("Content-Type: application/json");
$this->db->select("dailymovement.id_order,dailymovement.item_code,currency.currency_name as totalamountbuy,dailymovement.totalamountsale,CONCAT(dailymovement.detials_daily,' qyt',ordersale.totalqyt) AS detials_daily ", false);
$this->db->from('dailymovement');
$this->db->join('ordersale', 'ordersale.idorder= dailymovement.id_order','left outer');
$this->db->join('currency', 'currency.currency_number = ordersale.currency_number','left outer');
$this->db->where('dailymovement.data_daily>=', $datee);
$this->db->where('dailymovement.data_daily<=', $dateee);
$this->db->where('dailymovement.totalamountsale!=' ,null,FALSE);
$this->db->order_by("dailymovement.id_order", "desc");
$query = $this->db->get();
return json_encode($query->result(),JSON_UNESCAPED_UNICODE);
}
массив json
[{"id_order":"21","item_code":"SALE","totalamountbuy":"$","totalamountsale":"48790","detials_daily":" 153"},
{"id_order":"23","item_code":"SALE","totalamountbuy":"$","totalamountsale":"20790","detials_daily":" 5"}
{"id_order":"20","item_code":"SALE","totalamountbuy":"ERUO","totalamountsale":"22200","detials_daily":" 40"},
{"id_order":"19","item_code":"SALE","totalamountbuy":"TL","totalamountsale":"4500","detials_daily":" 45"}]
СУММИРОВАТЬ ЗНАЧЕНИЯ И ДОБАВИТЬ СТРОКУ ДЛЯ ПРИМЕРА СУММА ЗНАЧЕНИЯ totalamountsale ЕСЛИ totalamountbuy == $
Я бы хотел добавить дополнительное поле и сделать его похожим на
{"item_code":"TOTAL","totalamountbuy":"$","totalamountsale":"69580","detials_daily":" 158"}
ТЕПЕРЬ результат
[{"id_order":"21","item_code":"SALE","totalamountbuy":"$","totalamountsale":"48790","detials_daily":" 153"},
{"id_order":"23","item_code":"SALE","totalamountbuy":"$","totalamountsale":"20790","detials_daily":" 5"}
{"id_order":"20","item_code":"SALE","totalamountbuy":"ERUO","totalamountsale":"22200","detials_daily":" 40"},
{"id_order":"19","item_code":"SALE","totalamountbuy":"TL","totalamountsale":"4500","detials_daily":" 45"},
{"id_order":"0","item_code":"TOTAL","totalamountbuy":"$","totalamountsale":"69580","detials_daily":" 158"}]
при каком условии вы хотите проверить, добавлять ли дополнительную строку?
Вы действительно хотите просуммировать значения всех записей, верно? (Потому что с данными вашего примера это должно привести к totalamountsale = 96280 и detials_daily = 243, но это не соответствует вашему данному примеру.)
условие totalamountbuy == $






// for demonstration purposes, using json_decode to get an array matching your sample data
$querydata = json_decode('[{"id_order":"21","item_code":"SALE","totalamountbuy":"$","totalamountsale":"48790","detials_daily":" 153"},
{"id_order":"23","item_code":"SALE","totalamountbuy":"$","totalamountsale":"20790","detials_daily":" 5"},
{"id_order":"20","item_code":"SALE","totalamountbuy":"ERUO","totalamountsale":"22200","detials_daily":" 40"},
{"id_order":"19","item_code":"SALE","totalamountbuy":"TL","totalamountsale":"4500","detials_daily":" 45"}]');
// initialize total array with 0 as starting value for the fields to sum up
$total = [ 'id_order' => '0', 'item_code' => 'TOTAL', 'totalamountbuy' => '$',
'totalamountsale' => 0, 'detials_daily' => 0 ];
foreach($querydata as $row) {
if ($row->totalamountbuy == '$') { // if $, add up values
$total['totalamountsale'] += $row->totalamountsale;
$total['detials_daily'] += $row->detials_daily;
}
}
// append total to existing array
$querydata[] = $total;
echo json_encode($querydata);
(Не уверен, что $this->db->get() возвращает массив напрямую; это может быть более сложный объект, который просто реализует итерируемые возможности. В этом случае вам придется искать метод, чтобы получить результат в виде фактического массива или преобразовать его в один первый.)
спасибо, но возникла ошибка. Произошла ошибка PHP. Серьезность: сообщение с уведомлением: попытка получить свойство не-объекта Имя файла: models / Json.php Номер строки: 42 и [{"id_order": "21", "item_code": "sale", "totalamountbuy": "$", "t otalamountsale": "487 90", "detials_daily": "153"}, {"id_order": " 20", "item_code": «sal e», «totalamountbuy»: «eruo», «totalamounts ale»: «22200», «detial s_daily»: «40»}, {«id_ order»: «19», «item_co» De ":" اتورة sale "," totalamountbuy ":" tl "," totalamountsale ":" 4500 "," detials_daily ":" 45 "}, {" id_orde r ":" 0 "," item_code ":" TOTAL "," totalamountb uy ":" $ "," totalamount sale ": 0," detials_dai ly ": 0}]
Невозможно сказать, откуда это взялось, если вы не покажете нам свой сценарий и как вы пытались это реализовать. В моем коде всего около двух десятков строк, поэтому, если вы цитируете сообщения об ошибках, в которых упоминаются строки 42 или 292, в них полностью отсутствует какой-либо контекст.
$ querydataw = json_encode ($ query-> result (), JSON_UNESCAPED_UNICODE); $ querydata = json_decode ($ querydataw, JSON_UNESCAPED_UNICODE); $ total = ['id_order' => '0', 'item_code' => 'TOTAL', 'totalamountbuy' => '$', 'totalamountsale' => 0, 'detials_daily' => 0]; foreach ($ querydata as $ row) {if ($ row-> totalamountbuy == '$') {// если $, складываем значения $ total ['totalamountsale'] + = $ row-> totalamountsale; $ total ['detials_daily'] + = $ row-> detials_daily; }} // добавляем итог к существующему массиву $ querydata [] = $ total; вернуть json_encode ($ querydata, JSON_UNESCAPED_UNICODE);
Возможно, это должен быть $row['...'] вместо $row->..., не уверен, имеете ли вы здесь дело с реальными объектами или ассоциативными массивами, что не может быть выведено из вашего примера JSON.
models / Json.php Номер строки: 42 if ($ row-> totalamountbuy == '$')
Как я уже сказал, попробуйте получить доступ к $ row как к массиву, а не к объекту.
да, конечно, спасибо за решение должно быть $ row ['...'] foreach ($ querydata as $ row) {if ($ row ['totalamountbuy'] == "$") {// если $, добавить дополнительные значения $ total ['totalamountsale'] + = $ row ['totalamountsale']; $ total ['detials_daily'] + = $ row ['detials_daily']; }}
Большое спасибо за помощь мне
Прокрутите существующий массив, просуммируйте значения, создайте объектный / ассоциативный массив той же структуры, заполните его значениями и добавьте его в конец исходного массива, прежде чем вернуть его в кодировке JSON ...