PHP Sum Array - Sum Only Array Elements

I have an array as follows:

$row , when I output the entire array, it produces the following:

1. I like crisps (38) 37% 55% 8% 0%

When I echo one part of the array, I get 4 shapes that interest me.

echo "<td class='set1'>". number_format($row[6], 0) ."%</td>";

The above code displays the following 4 numbers:

37% 55% 8% 0%

I would just like to declare the first two numbers (i.e. 37% + 55%) and print the result (92%). Hope this helps?

I should also point out that the array contains much more information than just these four digits.

As requested: output from var_dump[6]

string(7) "36.8421" string(7) "28.9474" string(7) "39.4737" string(7) "23.6842" string(7) "28.9474" string(6) "8.0000" string(7) "23.6842" string(7) "39.4737" string(7) "11.1111" string(7) "13.8889" string(7) "11.1111" string(7) "13.8889" string(7) "17.1429" string(7) "20.0000" string(7) "28.5714" string(7) "25.7143" string(7) "34.2857" string(7) "28.5714" string(7) "28.5714" string(7) "28.5714" string(7) "20.5882" string(7) "20.5882" string(7) "11.7647" string(7) "29.4118" string(7) "17.6471" string(7) "20.5882" string(6) "3.0303" string(6) "2.9412" string(6) "3.0303" string(7) "38.2353" string(7) "12.1212" string(7) "27.2727" string(7) "18.1818" string(7) "33.3333" string(7) "34.7826" string(7) "17.3913" string(7) "30.4348" string(7) "17.3913" string(7) "17.3913" string(7) "13.0435" string(7) "30.4348" string(7) "27.2727"

Is there any way to do this?

Thanks in advance,

Homer.

All code - hope this helps:

 if ($mysqli->multi_query($query)) { do { /* store first result set */ if ($result = $mysqli->store_result()) { $i = 1; while ($row = $result->fetch_row()) { if($i==1){ echo "<tr><td class='qnum'><span class='bold'>". $row[3] .".</span></td><td class='qtext'> ". $row[4] ." (<span class='italics'>". $row[5] ."</span>)</td><td></td>"; $i = 0; } echo "<td class='set1'>". number_format($row[6], 0) ."%</td>"; $var = $row[6]; } echo "</tr>"; $result->free(); } /* print divider */ //if ($mysqli->more_results()) { // printf("-----------------\n"); //} } while ($mysqli->next_result()); } 

In the section where $ row [6] appears, four firgures 37% 55% 8% 0% appear - I would like to add the first two of these numbers together.

If this helps, here is the result of the SQL query

 response q1 Responses qnum Question_Text Total percentage 4 4 14 1 I like crisps 38 36.8421 3 3 21 1 I like crisps 38 55.2632 2 2 3 1 I like crisps 38 7.8947 1 NULL 0 1 I like crisps 38 0.0000 

I would like to make ad 36.8421 and 55.2632 together.

Hope this helps!

+4
source share
2 answers

Based on the assumption that you always want to sum every two lines, you can do this as follows:

 // This for-loop is intended as a replacement for your // innermost while-loop (rows 6-14 in your question). // I used a for-construct because we need to count the // cycles, and it will do it for us. // The condition for terminating the loop is still the same // as in the original while-loop. ?><tr><?php for ($rownum = 1; $row = $result->fetch_row(); $rownum++) { if ($rownum == 1) { ?> <td class='qnum'><span class='bold'><?php echo $row[3] ?></span></td> <td class='qtext'><?php echo $row[4] ?> (<span class='italics'><?php echo $row[5] ?></span>)</td><td></td> <?php } // Sum and display on even cycles // as <N> modulo 2 == 0 is true only on even numbers if ($rownum % 2 == 0) { // Display the formatted value, // at the same time adding the previous cycles value to this one ?><td class='set1'><?php echo number_format($tmp + $row[6], 0) ?>%</td><?php // Store the value of $row[6] on odd cycles } else { $tmp = $row[6]; } } ?></tr><?php 
+2
source

I assume you could use a combination of array_sum and array_slice :

 $arr = array(1, 2, 3, 4); echo "First sum: " . array_sum(array_slice($arr,0,2)); echo '<br />'; echo "Second sum: " . array_sum(array_slice($arr,2,3)); 

Conclusion:

 First sum: 3 Second sum: 7 

EDIT: based on an updated question, you will need something like:

 $str = "55% 23% 12% 20%"; // the below line can be omitted because of the way PHP handles conversions $str = str_replace('%', '', $str); $arr = split(' ', $str); echo "First sum: " . array_sum(array_slice($arr,0,2)) . '%'; echo '<br />'; echo "Second sum: " . array_sum(array_slice($arr,2,3)) . '%'; 

Conclusion:

 First sum: 78% Second sum: 32% 
+8
source

Source: https://habr.com/ru/post/1307531/


All Articles