Сложить числа в массиве php
Есть строка
$all_prices = array($data_platforms__integration_cost_agreed[0]->integration_cost);
Она выводит это через var_dump($all_prices)
array(1) {
[0]=>
string(5) "34634"
}
array(1) {
[0]=>
string(6) "200000"
}
К БД обращаюсь так, чтобы вывести числа 34634 и 200000 - это цены
$data_platforms__integration_cost_agreed = DataPlatformsForm::find()
->select('integration_cost')
->where(['id_blogger' => $bloggers->id])
->all();
Вопрос
Как мне суммировать эти числа 34634 и 200000?
Метод в контролере
public function actionIndex()
{
$bloggers_db = BloggerForm::find()->orderBy('id desc')->all();
// Вытаскиваем клиента который привязан к проекту
$node_project_klient = NodeProjectKlient::find()->Where(['id_project' => Yii::$app->request->get("project")])->one();
$data_platforms_db = DataPlatformsForm::find()->all();
// Выводим всех клиентов которые привязаные к менеджеру
$manager_node_klient_db = User::find()
->leftJoin('node_klient_manager', '`node_klient_manager`.`id_klient` = `user`.`id`')
->where(['node_klient_manager.id_manager' => Yii::$app->user->identity->id])
->orderBy('id desc')
->all();
// Выводим всех блогеров по проекту (нейтральные)
$bloggers_neutral_projects_db = BloggerForm::find()
->leftJoin('node_project_blogger', '`node_project_blogger`.`id_blogger` = `bloggers`.`id`')
->Where([
'node_project_blogger.id_project' => Yii::$app->request->get('project'),
'node_project_blogger.long_list' => 0,
'node_project_blogger.agreed' => 0,
])
->orderBy('id desc')
->all();
// Выводим всех блогеров по проекту (отклонённые)
$bloggers_rejected_projects_db = BloggerForm::find()
->leftJoin('node_project_blogger', '`node_project_blogger`.`id_blogger` = `bloggers`.`id`')
->Where([
'node_project_blogger.id_project' => Yii::$app->request->get('project'),
'node_project_blogger.long_list' => 2,
'node_project_blogger.agreed' => 0,
])
->orderBy('id desc')
->all();
// Выводим всех блогеров по проекту (согласованные)
$bloggers_approved_projects_db = BloggerForm::find()
->leftJoin('node_project_blogger', '`node_project_blogger`.`id_blogger` = `bloggers`.`id`')
->Where([
'node_project_blogger.id_project' => Yii::$app->request->get('project'),
'node_project_blogger.long_list' => 1,
'node_project_blogger.agreed' => 0,
])
->orderBy('id desc')
->all();
// Выводим блогеров из таблицы связей для обновлений статусов
$node_project_blogger_db = NodeProjectBlogger::find()->where(['id_project' => Yii::$app->request->get('project')])->all();
if ($this->request->isPost)
{
// Обработка статусов блогеров по id
foreach ($node_project_blogger_db as $node_project_blogger)
{
// ========================== LOG CREATE ================================= //
$str_log = '================================================';
$array = array(
'Controller' => 'Manager',
'Method' => 'Index',
'id_project' => Yii::$app->request->get('project'),
'id_blogger' => $node_project_blogger->id_blogger,
'long_list' => $this->request->post('status_'.$node_project_blogger->id_blogger)
);
$log = date('Y-m-d H:i:s') . ' ' . print_r($array, true);
file_put_contents('../logs/funnel_manager.txt', PHP_EOL . $str_log . PHP_EOL . $log . PHP_EOL . $str_log, FILE_APPEND);
// ======================== END LOG CREATE =============================== //
// Массовое редактирование статусов
// BloggerForm::updateAll(['long_list_status_manager' => 0], ['id' => array('11','30','31')]);
NodeProjectBlogger::updateAll(
['long_list' => $this->request->post('status_'.$node_project_blogger->id_blogger)],
[
'id_project' => Yii::$app->request->get('project'),
'id_blogger' => $node_project_blogger->id_blogger,
//'id_blogger' => array('1','2','6')
]);
// ------ ИЗМЕНЕНИЕ БЮДЖЕТА ------ //
// Биндим всех блоггеров
foreach ($bloggers_db as $bloggers)
{
// Если статус "Согласованные"
if ($this->request->post('status_'.$bloggers->id) == 1)
{
// Выводим сумму интеграции
$data_platforms__integration_cost_agreed = DataPlatformsForm::find()
->select('integration_cost')
->where(['id_blogger' => $bloggers->id])
->all();
// Все цены блогеров в массиве
//$all_prices = array('id_blogger_'.$bloggers->id => $data_platforms__integration_cost_agreed[0]->integration_cost);
$all_prices = array($data_platforms__integration_cost_agreed[0]->integration_cost);
$summ = 0;
foreach($all_prices as $price)
{
$summ += floatval($price[0]);
}
echo $summ;
// echo '<pre>';
// var_dump($all_prices);
// echo '</pre>';
}
}
die;
}
return $this->redirect(['?project='.Yii::$app->request->get('project')]);
}
return $this->render('index', [
'bloggers_db' => $bloggers_db,
'bloggers_neutral_projects_db' => $bloggers_neutral_projects_db,
'bloggers_approved_projects_db' => $bloggers_approved_projects_db,
'bloggers_rejected_projects_db' => $bloggers_rejected_projects_db,
]);
}
Ответы (1 шт):
Предположу, что в $all_prices лежит массив, внутри которого два вложенных массива, в которых под нулевыми индексами лежат цены, указанные в строковом формате
тогда сумму можно посчитать так:
$summ = intval($all_prices[0][0]) + intval($all_prices[0][1]);
Если же количество цен, которые нужно посчитать больше двух, то это можно сделать в цикле:
$summ = 0;
foreach($all_prices as $price){
$summ += intval($price[0]);
}
Замечание №1:
Выражение
$summ += intval($price[0]);
позволяет увеличить значение переменной указанной слева, на значение указанное в правой части выражения
оно равносильно следующему:
$summ = $summ + intval($price[0]);
Замечание №2:
Функция intval() приводит строку к целочисленному значению.
Если подразумевается, что там будут не только целые числа - используйте вместо нее floatval() - она приведет строку к значению числа с плавающей точкой
UPDATE
- до итерации всех блогеров определяем массив в котором будут хранится цены
- в каждой итерации кладём цену в массив
- после чего суммируем и выводим все цены
$all_prices = array();
// Биндим всех блоггеров
foreach ($bloggers_db as $bloggers)
{
// Если статус "Согласованные"
if ($this->request->post('status_'.$bloggers->id) == 1)
{
// Выводим сумму интеграции
$data_platforms__integration_cost_agreed = DataPlatformsForm::find()
->select('integration_cost')
->where(['id_blogger' => $bloggers->id])
->all();
// Кладем цену в массив
$all_prices[]=floatval($data_platforms__integration_cost_agreed[0]->integration_cost);
}
}
$summ = 0;
foreach($all_prices as $price)
{
$summ += $price;
}
echo $summ;
die();