From mycsv.csv
$data[7] has these:
4294967296/4294967296
4294967296
8589934592/8589934592
I want to calculate and put GB, so they become like this:
4GB/4GB
4GB
8GB/8GB
What I did:
<?php
$a = str_ireplace("/"," ",$data[7]);
echo (floor($a/1000000000))."GB";
But it gives error for the ones that have /
:
Warning: A non-numeric value encountered in… on line 45 4GB
…
Help Please… Thank you
Sorry, I think I describe it wrong.
So, I have a csv file with many data in it.
while (! feof($CSVvar)) {
$data = fgetcsv($CSVvar, 1000, ",");
if (! empty($data)) {
?>
<tr>
<td><?php echo $data[0]; ?></td>
<td><?php echo $data[7]; ?></td></tr>
will give among others:
$data[7]
4294967296/4294967296
then another
$data[7]
4294967296
and so on..
2
Answers
Hope this will help you
You can’t
floor
a string like4294967296 4294967296
after you do thestr_ireplace
. You will need a bit of looping for this but I have tried to make it as short as possible for you keeping it readable(hopefully).So, split the string based on new lines so you would get each string in a separate array index.
Now, for each string of the form
x/y
orx
itself, we split the string based on/
. Now, we divide each number in the array by1e9
to convert bytes to Giga bytes and implode them back with aGB
suffix attached to it.Finally, we collect these results in a new array and implode them back using a new line character.
Live Demo