0

I am trying to loop through an array in PHP and extract some values. I am having difficulties in getting the values of the following array like this: (702,car,707,car2,704car3...)

This is how my array looks like:

[data:protected] => Array (
  [0] => Array (
    [0] => 702
    [1] => car
  )
  [1] => Array (
    [0] => 707
    [1] => car2
  )
  [2] => Array (
    [0] => 704
    [1] => car3
  )
  [3] => Array (
    [0] => 705
    [1] => car4
  )
  [4] => Array (
    [0] => 708
    [1] => car5
  )
  [5] => Array (
    [0] => 709
    [1] => car6
  )
  [6] => Array (
    [0] => 706
    [1] => car7
  )
  [7] => Array (
    [0] => 703
    [1] => car8
  )
)

I've tried this:

foreach($result as $resultItem){
   $resultArray[] = $resultItem['n'];
}
print_r($resultArray);

But this gives me only the values:

   Array ( [0] => 702 [1] => 707 [2] => 704 [3] => 705 [4] => 708 [5] => 709 [6] => 706 [7] => 703 ) 

How do I access the other values?

tyteen4a03
  • 1,812
  • 24
  • 45
user1919
  • 3,818
  • 17
  • 62
  • 97

5 Answers5

5
foreach($result as $resultItem) {
    foreach ($resultItem as $resultItemItem) {
        $resultArray[] = $resultItemItem;
    }
}

This should do the thrick if I see your array.

Blaatpraat
  • 2,829
  • 11
  • 23
4

Assuming that the dimension of the array is always 2 you can do it like this

foreach($result as $resultItem)
{
    if(is_array($resultItem))
    {
        foreach($resultItem as $resultSubItem)
        {
            $resultArray[] = $resultSubItem;
        }
    }
    else $resultArray[] = $resultItem:
 }

If the dimension of the array is unknown and you simply want to flatten the array see this question How to Flatten a Multidimensional Array?

$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($result));
foreach($it as $v) 
{
    $resultArray[] = $v;
}
Community
  • 1
  • 1
signpainter
  • 720
  • 1
  • 7
  • 22
1

Try this one

foreach($result as $resultItem){
   $resultArray[] = $resultItem[0];
   $resultArray[] = $resultItem[1];
}
print_r($resultArray);
Vick
  • 287
  • 2
  • 8
0
foreach($result as $resultItem){
   $resultArray[] = array(
      $resultItem[0],
      $resultItem[1]
   );
}
print_r($resultArray);

you could also do it like this

foreach($result as $resultItem){
   $resultArray[$resultItem[0]] = $resultItem[1];
}
print_r($resultArray);

this way your array would look like

Array([701] => 'car',[702] => 'car',[703] => 'car')

Danny Broadbent
  • 1,199
  • 1
  • 9
  • 21
0

Try this code:

foreach($result as $resultItem){
   $resultArray = array_merge($resultArray,$resultItem);
}
Andy
  • 576
  • 2
  • 8
  • 18