javascript - 如何将两个数组合二为一?
问题描述
我有两个需要加入的安排有问题,我的意图如下,通过使用 PHP 查询 MySQL,我恢复了我所有注册公司的名称和所述公司每个月的收入:
这是我的查询:
$totalEmpresas = $db->rawQuery('SELECT fecha, SUM(total) AS ingresosTotal from ingresos
where YEAR(fecha) = "2021" AND ingresos.id_rol = ? AND ingresos.id_usuario = ? AND ingresos.empresa = ?
GROUP BY MONTH(fecha)', Array ($idRolUser, $idUser, $idEmpresa));
此查询返回一个数组,该数组按每个咨询公司的所有可用月份分组,这是它返回的数组示例:
Array
(
[0] => Array
(
[fecha] => 2021-01-08
[ingresosTotal] => 158181.17
)
[1] => Array
(
[fecha] => 2021-02-05
[ingresosTotal] => 781595.14
)
[2] => Array
(
[fecha] => 2021-03-05
[ingresosTotal] => 345094.65
)
[3] => Array
(
[fecha] => 2021-04-09
[ingresosTotal] => 166694.76
)
[4] => Array
(
[fecha] => 2021-05-26
[ingresosTotal] => 155874.65
)
[5] => Array
(
[fecha] => 2021-06-04
[ingresosTotal] => 159801.81
)
[6] => Array
(
[fecha] => 2021-07-02
[ingresosTotal] => 161689.9
)
)
这就是我遇到的问题,我的意图是形成一个具有以下结构的数组:
data:[
{
empresa = Empresa Ejemplo 1,
2021-02-05 = 781595.14,
2021-03-05 = 345094.65,
2021-04-09 = 166694.76,
2021-05-26 = 155874.65,
2021-06-04 = 159801.81,
2021-07-02 = 161689.9
},
{
empresa = Empresa Ejemplo 2,
2021-02-05 = 781595.14,
2021-03-05 = 345094.65,
2021-04-09 = 166694.76,
2021-05-26 = 155874.65,
2021-06-04 = 159801.81,
2021-07-02 = 161689.9
}
]
问题是我的公司和我的日期在两个单独的数组中,如果带有 array_push 的数组如下:
{"data":[
{
"Empresa":"Empresa Ejemplo 1",
"Fechas":[
{"January":158181.17},
{"February":781595.14},
{"March":345094.65},
{"April":166694.76},
{"May":155874.65},
{"June":159801.81},
{"July":161689.9}
]
}
我尝试在 foreach 中使用 array_push 但这不起作用,这是我的代码:
function MensualIngreso($idRolUser, $idUser){
require_once ("../vendor/thingengineer/mysqli-database-class/MysqliDb.php");
$db = new MysqliDb (DB_HOST, DB_USERNAME, '', DB_NAME);
// Debemos cosultar los ingresos de las empresas globalmente y por mes
// 1.- Seleccionaremos todas las empresas por rol y id de usuario
$db->where ("id_rol", $idRolUser);
$db->where ("id_usuario", $idUser);
$empresas = $db->get ("empresas");
// 2.- Por cada de una de las empresas recorreremos los meses que ha pagado
$aura = [];
$data['data'] = [];
foreach ($empresas as $key => $value) {
$idEmpresa = $value['id_empresa'];
$empresa = $value['empresa'];
$fechas = [];
$totalEmpresas = $db->rawQuery('SELECT fecha, SUM(total) AS ingresosTotal from ingresos
where YEAR(fecha) = "2021" AND ingresos.id_rol = ? AND ingresos.id_usuario = ? AND ingresos.empresa = ? GROUP BY MONTH(fecha)', Array ($idRolUser, $idUser, $idEmpresa));
//print_r($totalEmpresas);
//return;
foreach ($totalEmpresas as $key => $value) {
array_push($fechas, array(strftime("%B", strtotime( $value['fecha'] )) => $value['ingresosTotal']) );
}
//print_r($fechas);
$consulta = array(
"Empresa" => $empresa,
"Fechas" => $fechas
);
array_push($data['data'], $consulta);
}
//print_r($data);
return $data;
}
解决方案
我认为您的主要问题之一可能是您试图从中获取月份,$value['fecha_aportacion']
但 SQL 查询中似乎不存在该月份。我认为它应该只是$value['fecha']
。
我认为这可以满足您的需求:
$array = [
[
'fecha' => '2021-01-08',
'ingresosTotal' => '158181.17',
],
[
'fecha' => '2021-02-05',
'ingresosTotal' => '781595.14',
],
[
'fecha' => '2021-03-05',
'ingresosTotal' => '345094.65',
],
[
'fecha' => '2021-04-09',
'ingresosTotal' => '166694.76',
],
[
'fecha' => '2021-05-26',
'ingresosTotal' => '155874.65',
],
[
'fecha' => '2021-06-04',
'ingresosTotal' => '159801.81',
],
[
'fecha' => '2021-07-02',
'ingresosTotal' => '161689.9',
],
];
$empresa = 'empresa ejemplo 1';
$fechas = [];
$fechas['empresa'] = $empresa;
foreach ($array as $value) {
$fecha = strftime("%B", strtotime( $value['fecha'] ));
$fechas[$fecha] = $value['ingresosTotal'];
}
echo json_encode($fechas, JSON_PRETTY_PRINT);
输出:
{
"empresa": "empresa ejemplo 1",
"January": "158181.17",
"February": "781595.14",
"March": "345094.65",
"April": "166694.76",
"May": "155874.65",
"June": "159801.81",
"July": "161689.9"
}
推荐阅读
- xcode - VirtualBox MacOS Mojave 卡在 Shell 脚本屏幕上
- javascript - 如何使用 RegEx 在对象数组的深处查找字符串
- java - 使用 JTS 简化段列表
- pandas - pd.to_numeric(downcast="integer") 和 astype(int) 不起作用
- java - 循环遍历 2 个不同的数组以评估 Java 中的条件
- asp.net-core - 即使将该类添加到服务后,也无法从根提供者解析范围服务
- inno-setup - 在 inno 设置中更改自定义消息的文本字体
- ios - 如何在音频单元扩展(实时进程)中为音频文件播放分配内存?
- opencv - 如何用 cmake 编译 OpenCV?
- javascript - 在 JavaScript (jQuery) 中单击图像映射区域时,如何删除关联的图像?