user3771102
user3771102

Reputation: 558

How to get values in an array with many arrays in php?

I am confused with this list of array. I have a text file that contains the values that I will need to insert to the database. I have exploded it so that I can get those separated values.

REP 1020001,3,140822,140822;0111,260.00,23,34,3,54,1,2,4,5,12,23,46;0214,22.00,32,4,11,25,4,12,23,5,2,2,44;0313,25.00,5,52,12,45,12,5,6,7,12,3,33;

My code is just like this:

$read = FileRead($tmp);
$perline = explode(";",$read);

for($j=0; $j<count($perline); $j++)
        {
            $percomma = explode(",", $perline[$j]);
            print_r ($percomma);
        }

And the result is this:

Array ( [0] => 1020001 [1] => 3 [2] => 140822 [3] => 140822 ) Array ( [0] => 0111 [1] => 260.00 [2] => 23 [3] => 34 [4] => 3 [5] => 54 [6] => 1 [7] => 2 [8] => 4 [9] => 5 [10] => 12 [11] => 23 [12] => 46 ) Array ( [0] => 0214 [1] => 22.00 [2] => 32 [3] => 4 [4] => 11 [5] => 25 [6] => 4 [7] => 12 [8] => 23 [9] => 5 [10] => 2 [11] => 2 [12] => 44 ) Array ( [0] => 0313 [1] => 25.00 [2] => 5 [3] => 52 [4] => 12 [5] => 45 [6] => 12 [7] => 5 [8] => 6 [9] => 7 [10] => 12 [11] => 3 [12] => 33 ) Array ( [0] => )

What should I do to get the value from the 2nd array to the 4th array? Should I put it inside another array to make it multidimensional? Or there are other ways to solve this?

EDIT

My question is how will I be able to get the values from the print_r($percomma) when there are a lot of arrays in the result. The result array is up there that says And the result is this

EDIT 2

As making the array to be multidimensional I get this as a result:

Array ( [0] => Array ( [0] => 0111 [1] => 260.00 [2] => 23 [3] => 34 [4] => 3 [5] => 54 [6] => 1 [7] => 2 [8] => 4 [9] => 5 [10] => 12 [11] => 23 [12] => 46 ) ) Array ( [0] => Array ( [0] => 0214 [1] => 22.00 [2] => 32 [3] => 4 [4] => 11 [5] => 25 [6] => 4 [7] => 12 [8] => 23 [9] => 5 [10] => 2 [11] => 2 [12] => 44 ) ) Array ( [0] => Array ( [0] => 0313 [1] => 25.00 [2] => 5 [3] => 52 [4] => 12 [5] => 45 [6] => 12 [7] => 5 [8] => 6 [9] => 7 [10] => 12 [11] => 3 [12] => 33 ) ) Array ( [0] => Array ( [0] => ) )

It shows that they're all individual arrays. My code is this:

$read = FileRead($tmp);
$perline = explode(";",$read);

for($j=0; $j<count($perline); $j++)
        {
            $percomma = explode(",", $perline[$j]);
            $entries = array($percomma);
            print_r ($entries);
        }

EDIT 3

From subas_poudel's answer I get this result:

    Array
    (
    )
    Array
    (
        [0] => Array
            (
                [0] => 0111
                [1] => 260.00
                [2] => 23
                [3] => 34
                [4] => 3
                [5] => 54
                [6] => 1
                [7] => 2
                [8] => 4
                [9] => 5
                [10] => 12
                [11] => 23
                [12] => 46
            )

    )
    Array
    (
        [0] => Array
            (
                [0] => 0111
                [1] => 260.00
                [2] => 23
                [3] => 34
                [4] => 3
                [5] => 54
                [6] => 1
                [7] => 2
                [8] => 4
                [9] => 5
                [10] => 12
                [11] => 23
                [12] => 46
            )

        [1] => Array
            (
                [0] => 0214
                [1] => 22.00
                [2] => 32
                [3] => 4
                [4] => 11
                [5] => 25
                [6] => 4
                [7] => 12
                [8] => 23
                [9] => 5
                [10] => 2
                [11] => 2
                [12] => 44
            )

    )
    Array
    (
        [0] => Array
            (
                [0] => 0111
                [1] => 260.00
                [2] => 23
                [3] => 34
                [4] => 3
                [5] => 54
                [6] => 1
                [7] => 2
                [8] => 4
                [9] => 5
                [10] => 12
                [11] => 23
                [12] => 46
            )

        [1] => Array
            (
                [0] => 0214
                [1] => 22.00
                [2] => 32
                [3] => 4
                [4] => 11
                [5] => 25
                [6] => 4
                [7] => 12
                [8] => 23
                [9] => 5
                [10] => 2
                [11] => 2
                [12] => 44
            )

        [2] => Array
            (
                [0] => 0313
                [1] => 25.00
                [2] => 5
                [3] => 52
                [4] => 12
                [5] => 45
                [6] => 12
                [7] => 5
                [8] => 6
                [9] => 7
                [10] => 12
                [11] => 3
                [12] => 33
            )

    )
    Array
    (
        [0] => Array
            (
                [0] => 0111
                [1] => 260.00
                [2] => 23
                [3] => 34
                [4] => 3
                [5] => 54
                [6] => 1
                [7] => 2
                [8] => 4
                [9] => 5
                [10] => 12
                [11] => 23
                [12] => 46
            )

        [1] => Array
            (
                [0] => 0214
                [1] => 22.00
                [2] => 32
                [3] => 4
                [4] => 11
                [5] => 25
                [6] => 4
                [7] => 12
                [8] => 23
                [9] => 5
                [10] => 2
                [11] => 2
                [12] => 44
            )

        [2] => Array
            (
                [0] => 0313
                [1] => 25.00
                [2] => 5
                [3] => 52
                [4] => 12
                [5] => 45
                [6] => 12
                [7] => 5
                [8] => 6
                [9] => 7
                [10] => 12
                [11] => 3
                [12] => 33
            )

    )

The last set of array is what I needed but how can I get those values?

EDIT 4 With my simple mistake I put the array_slice inside my for loop that's why I get too many arrays. Now this is the result of @subas_poudel's answer.

    Array
    (
        [0] => Array
            (
                [0] => 0111
                [1] => 260.00
                [2] => 23
                [3] => 34
                [4] => 3
                [5] => 54
                [6] => 1
                [7] => 2
                [8] => 4
                [9] => 5
                [10] => 12
                [11] => 23
                [12] => 46
            )

        [1] => Array
            (
                [0] => 0214
                [1] => 22.00
                [2] => 32
                [3] => 4
                [4] => 11
                [5] => 25
                [6] => 4
                [7] => 12
                [8] => 23
                [9] => 5
                [10] => 2
                [11] => 2
                [12] => 44
            )

        [2] => Array
            (
                [0] => 0313
                [1] => 25.00
                [2] => 5
                [3] => 52
                [4] => 12
                [5] => 45
                [6] => 12
                [7] => 5
                [8] => 6
                [9] => 7
                [10] => 12
                [11] => 3
                [12] => 33
            )

    )

Upvotes: 0

Views: 135

Answers (3)

vernonner3voltazim
vernonner3voltazim

Reputation: 786

I'm going to copy/edit your original code posting, to show what I was talking about in my comment.

$read = FileRead($tmp);
$perline = explode(";",$read);
$percomma = array();             //new array-declaration line

for($j=0; $j<count($perline); $j++)
{  $percomma[j] = explode(",", $perline[$j]);
   print_r ($percomma[j]);
}

Your first "And the result is" line is a printed sequence of arrays, and would be unchanged by implementing the above tweaks to your code. However, because the values in the $percomma variable are no longer overwritten in each loop that obtains an array from the explode() function, you may now, at any point after the above code, do something like:

print_r($percomma[1]); //re-print 2nd array, or
$ary_el = $percomma[2][1]; //get 2nd element of 3rd array (22.00) into a variable.

Upvotes: 1

subas_poudel
subas_poudel

Reputation: 456

you can use multidimensional array to hold all the value. then you can get all the array you want by either $percomma[index you want] or using array_slice.

$read = FileRead($tmp);
$perline = explode(";",$read);

for($j=0; $j<count($perline); $j++)
{
    $percomma[] = explode(",", $perline[$j]);          

}
echo '<pre>'.print_r (array_slice($percomma,1,3),true).'</pre>';

Upvotes: 1

Petru Lebada
Petru Lebada

Reputation: 1682

$array = array
   (
   array("bla",22,18),
   array("blaa",15,13),
   array("blaaa",5,2),
   array("blaaaa",17,15)
   );

for ($row = 0; $row <  4; $row++) {
   echo "<p><b>Row number $row</b></p>";
   echo "<ul>";
   for ($col = 0; $col <  3; $col++) {
     echo "<li>".$array[$row][$col]."</li>";
   }
   echo "</ul>";
}

Upvotes: 0

Related Questions