Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal estou com um problema,
tenho o seguinte array
Array
(
[Receita] => Array
(
[valores] => 10,8,5,0,0,0
[volumes] => 1027753,1048931,560000,0,0,0
)
[Despesa] => Array
(
[valores] => 2,2,2,0,0,0
[volumes] => 882630,806493,537650,0,0,0
)
)
Eu preciso subtrair os valores e deixar o array da seguinte forma
Array
(
[Receita] => Array
(
[valores] => 10,8,5,0,0,0
[volumes] => 1027753,1048931,560000,0,0,0
)
[Despesa] => Array
(
[valores] => 2,2,2,0,0,0
[volumes] => 882630,806493,537650,0,0,0
)
[Resultado] => Array
(
[valores] => 8,6,3,0,0,0
[volumes] => 882630,806493,537650,0,0,0
)
)
Como posso fazer?
Meu codigo esta da seguinte maneira
foreach ($ar_residuos as $key => $value) {
$valores = '';
$volumes = '';
$valorResultado = '';
$valorReceita = '';
$valorDespesa = '';
foreach ($periodo as $m) {
if (in_array($m, $ar_temp_months[$key])) {
$ar_residuos['Resultado'] = array('valores'=>'' , 'volumes' => '');
foreach ($graficos as $graf) {
if ($graf->residuo == $key && $graf->mes == $m) {
$valores .= $graf->valor /100;
$volumes .= (Session::get('unidade') == 1) ? $graf->volume / 1000 : $graf->volume;
$valorResultado .= (int)($valorReceita - $valorDespesa) /100;
break;
}
}
} else {
$valores .= '0';
$volumes .= '0';
$valorResultado .= '0';
}
$valores .= ',';
$volumes .= ',';
$valorResultado .= ',';
}
$ar_residuos[$key]['valores'] = substr($valores, 0, -1);
$ar_residuos[$key]['volumes'] = substr($volumes, 0, -1);
$ar_residuos['Resultado']['valores'] = substr($valorResultado, 0, -1);
$ar_residuos['Resultado']['volumes'] = substr($volumes, 0, -1);
}
O array resultado criando ali no meio do codigo é eu tentando fazer essa subtração do array multidimensional..
Agradeço qualquer ajuda.Preciso diiminuir o valor da chave valores , porem o codigo esta daquela forma e estou tentando reaproveitar pq se eu mudar esse codigo tenho q alterar em diversos pontos , esse é meu problema...
Se entendi bem:
<?php
$arr = [
'Receita' => [
'valores' => '10,8,5,0,0,0',
'volumes' => '1027753,1048931,560000,0,0,0'
],
'Despesa' => [
'valores' => '2,2,2,0,0,0',
'volumes' => '882630,806493,537650,0,0,0'
]
];
$valores_receita = explode(',', $arr['Receita']['valores']);
$valores_despesa = explode(',', $arr['Despesa']['valores']);
$valores_resultado = [];
foreach ($valores_receita as $offset => $valor) {
if (isset($valores_despesa[$offset])) {
$valores_resultado[$offset] = $valor - $valores_despesa[$offset];
}
}
$arr['Resultado'] = [
'valores' => implode(',', $valores_resultado),
'volumes' => $arr['Despesa']['volumes']
];
print_r($arr);
Saída:
Array
(
[Receita] => Array
(
[valores] => 10,8,5,0,0,0
[volumes] => 1027753,1048931,560000,0,0,0
)
[Despesa] => Array
(
[valores] => 2,2,2,0,0,0
[volumes] => 882630,806493,537650,0,0,0
)
[Resultado] => Array
(
[valores] => 8,6,3,0,0,0
[volumes] => 882630,806493,537650,0,0,0
)
)/profile/94216-jo%C3%A3o-batista-neto/?do=hovercard" data-mentionid="94216" href="/profile/94216-jo%C3%A3o-batista-neto/" rel="">@João Batista Neto exatamente isso cara !! Vou estudar o seu codigo !! Muito obrigado fera !
@diegohamaz1, dessa forma, utilizando o substr() você não está "subtraindo" o array, você está "engolindo" 1 caractere.
Você precisa é da subtração matemática, ou de "remover" um índice ? Se for para remoção de índice, em específico do final, você vai utilizar a função para array:
array_pop()