Accessing 3rd level of array

Hello lovely humans…

I’m using the Advanced Custom Field plugin for WordPress and I’n trying to figure out how I can access some values from an array in an array in an array.

Read More

Here is my array:

array(4) {
  [0]=;
  array(1) {
    ["image"]=>;
    array(10) {
      ["id"]=>
      int(282)
      ["alt"]=>
      string(12) "Cable bundle"
      ["title"]=>
      string(12) "Cable bundle"
      ["caption"]=>
      string(0) ""
      ["description"]=>
      string(0) ""
      ["mime_type"]=>
      string(9) "image/png"
      ["url"]=>
      string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o.png"
      ["width"]=>
      int(1280)
      ["height"]=>
      int(960)
      ["sizes"]=>
      array(33) {
        ["thumbnail"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o-220x150.png"
        ["thumbnail-width"]=>
        int(220)
        ["thumbnail-height"]=>
        int(150)
        ["medium"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o-300x225.png"
        ["medium-width"]=>
        int(300)
        ["medium-height"]=>
        int(225)
        ["large"]=>
        string(92) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o-1024x768.png"
        ["large-width"]=>
        int(640)
        ["large-height"]=>
        int(480)
        ["cat_post_thumb_sizecategoryposts-2"]=>
        string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o.png"
        ["cat_post_thumb_sizecategoryposts-2-width"]=>
        int(1280)
        ["cat_post_thumb_sizecategoryposts-2-height"]=>
        int(960)
        ["cat_post_thumb_sizecategoryposts-3"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o-220x150.png"
        ["cat_post_thumb_sizecategoryposts-3-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-3-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-4"]=>
        string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o.png"
        ["cat_post_thumb_sizecategoryposts-4-width"]=>
        int(1280)
        ["cat_post_thumb_sizecategoryposts-4-height"]=>
        int(960)
        ["cat_post_thumb_sizecategoryposts-5"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o-150x150.png"
        ["cat_post_thumb_sizecategoryposts-5-width"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-5-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-6"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o-220x150.png"
        ["cat_post_thumb_sizecategoryposts-6-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-6-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-7"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o-220x150.png"
        ["cat_post_thumb_sizecategoryposts-7-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-7-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-8"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o-220x150.png"
        ["cat_post_thumb_sizecategoryposts-8-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-8-height"]=>
        int(150)
        ["home-page"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6773761367_bc13aec4a5_o-530x250.png"
        ["home-page-width"]=>
        int(530)
        ["home-page-height"]=>
        int(250)
      }
    }
  }
  [1]=>
  array(1) {
    ["image"]=>
    array(10) {
      ["id"]=>
      int(281)
      ["alt"]=>
      string(7) "Circuit"
      ["title"]=>
      string(7) "Circuit"
      ["caption"]=>
      string(0) ""
      ["description"]=>
      string(0) ""
      ["mime_type"]=>
      string(10) "image/jpeg"
      ["url"]=>
      string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b.jpg"
      ["width"]=>
      int(1024)
      ["height"]=>
      int(768)
      ["sizes"]=>
      array(33) {
        ["thumbnail"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b-220x150.jpg"
        ["thumbnail-width"]=>
        int(220)
        ["thumbnail-height"]=>
        int(150)
        ["medium"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b-300x225.jpg"
        ["medium-width"]=>
        int(300)
        ["medium-height"]=>
        int(225)
        ["large"]=>
        string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b.jpg"
        ["large-width"]=>
        int(640)
        ["large-height"]=>
        int(480)
        ["cat_post_thumb_sizecategoryposts-2"]=>
        string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b.jpg"
        ["cat_post_thumb_sizecategoryposts-2-width"]=>
        int(1024)
        ["cat_post_thumb_sizecategoryposts-2-height"]=>
        int(768)
        ["cat_post_thumb_sizecategoryposts-3"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-3-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-3-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-4"]=>
        string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b.jpg"
        ["cat_post_thumb_sizecategoryposts-4-width"]=>
        int(1024)
        ["cat_post_thumb_sizecategoryposts-4-height"]=>
        int(768)
        ["cat_post_thumb_sizecategoryposts-5"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b-150x150.jpg"
        ["cat_post_thumb_sizecategoryposts-5-width"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-5-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-6"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-6-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-6-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-7"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-7-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-7-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-8"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-8-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-8-height"]=>
        int(150)
        ["home-page"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/6500613825_911abf3799_b-530x250.jpg"
        ["home-page-width"]=>
        int(530)
        ["home-page-height"]=>
        int(250)
      }
    }
  }
  [2]=>
  array(1) {
    ["image"]=>
    array(10) {
      ["id"]=>
      int(280)
      ["alt"]=>
      string(9) "TV cables"
      ["title"]=>
      string(9) "TV cables"
      ["caption"]=>
      string(0) ""
      ["description"]=>
      string(0) ""
      ["mime_type"]=>
      string(10) "image/jpeg"
      ["url"]=>
      string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o.jpg"
      ["width"]=>
      int(1280)
      ["height"]=>
      int(800)
      ["sizes"]=>
      array(33) {
        ["thumbnail"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o-220x150.jpg"
        ["thumbnail-width"]=>
        int(220)
        ["thumbnail-height"]=>
        int(150)
        ["medium"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o-300x187.jpg"
        ["medium-width"]=>
        int(300)
        ["medium-height"]=>
        int(187)
        ["large"]=>
        string(92) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o-1024x640.jpg"
        ["large-width"]=>
        int(640)
        ["large-height"]=>
        int(400)
        ["cat_post_thumb_sizecategoryposts-2"]=>
        string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o.jpg"
        ["cat_post_thumb_sizecategoryposts-2-width"]=>
        int(1280)
        ["cat_post_thumb_sizecategoryposts-2-height"]=>
        int(800)
        ["cat_post_thumb_sizecategoryposts-3"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-3-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-3-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-4"]=>
        string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o.jpg"
        ["cat_post_thumb_sizecategoryposts-4-width"]=>
        int(1280)
        ["cat_post_thumb_sizecategoryposts-4-height"]=>
        int(800)
        ["cat_post_thumb_sizecategoryposts-5"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o-150x150.jpg"
        ["cat_post_thumb_sizecategoryposts-5-width"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-5-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-6"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-6-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-6-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-7"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-7-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-7-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-8"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-8-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-8-height"]=>
        int(150)
        ["home-page"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/5249206215_be7e8572d8_o-530x250.jpg"
        ["home-page-width"]=>
        int(530)
        ["home-page-height"]=>
        int(250)
      }
    }
  }
  [3]=>
  array(1) {
    ["image"]=>
    array(10) {
      ["id"]=>
      int(279)
      ["alt"]=>
      string(0) ""
      ["title"]=>
      string(11) "CAT5 Cables"
      ["caption"]=>
      string(0) ""
      ["description"]=>
      string(11) "CAT5 Cables"
      ["mime_type"]=>
      string(10) "image/jpeg"
      ["url"]=>
      string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o.jpg"
      ["width"]=>
      int(1536)
      ["height"]=>
      int(2048)
      ["sizes"]=>
      array(33) {
        ["thumbnail"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o-220x150.jpg"
        ["thumbnail-width"]=>
        int(220)
        ["thumbnail-height"]=>
        int(150)
        ["medium"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o-225x300.jpg"
        ["medium-width"]=>
        int(225)
        ["medium-height"]=>
        int(300)
        ["large"]=>
        string(92) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o-768x1024.jpg"
        ["large-width"]=>
        int(640)
        ["large-height"]=>
        int(853)
        ["cat_post_thumb_sizecategoryposts-2"]=>
        string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o.jpg"
        ["cat_post_thumb_sizecategoryposts-2-width"]=>
        int(1536)
        ["cat_post_thumb_sizecategoryposts-2-height"]=>
        int(2048)
        ["cat_post_thumb_sizecategoryposts-3"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-3-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-3-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-4"]=>
        string(83) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o.jpg"
        ["cat_post_thumb_sizecategoryposts-4-width"]=>
        int(1536)
        ["cat_post_thumb_sizecategoryposts-4-height"]=>
        int(2048)
        ["cat_post_thumb_sizecategoryposts-5"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o-150x150.jpg"
        ["cat_post_thumb_sizecategoryposts-5-width"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-5-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-6"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-6-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-6-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-7"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-7-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-7-height"]=>
        int(150)
        ["cat_post_thumb_sizecategoryposts-8"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o-220x150.jpg"
        ["cat_post_thumb_sizecategoryposts-8-width"]=>
        int(220)
        ["cat_post_thumb_sizecategoryposts-8-height"]=>
        int(150)
        ["home-page"]=>
        string(91) "http://www.XXXXXXXX.com/dev/wp-content/uploads/2013/11/1543218761_62cea76758_o-530x250.jpg"
        ["home-page-width"]=>
        int(530)
        ["home-page-height"]=>
        int(250)
      }
    }
  }
}

I need to get the URL stored in ["home-page"] for each of the four images in the array as it’s for the correctly sized image and obviously it needs to loop through the entire array.
Basically, I need to understand how to access that level of the array.
I’ve done some reading, but I still don’t really get it.
Do I need multiple foreach loops?

So far I have this:

$images = get_field('homepage_image');  

foreach ($images as $key => $image ) {
    foreach ($image as $subkey => $value) {
        foreach ($value as $subsubkey => $subvalue) {
            foreach ($subvalue as $subsubsubkey => $subsubvalue) {
                $imageURL = $subsubvalue ['home-page']; 
                        echo $imageURL;
                        echo "<br />";                               }
                }
            }
        }

That seems to output the letter h a few times.
Can anyone tell me what I’m doing wrong?
There’s probably a better way of doing it, but I’d like to understand this.

Cheers
Toby

Related posts

Leave a Reply

3 comments

  1. If you have a multi-level array, you can just refer to the particular item using all keys in one call:

    $thumbnail_one = $array[0]['image']['sizes']['thumbnail'];
    

    In your case, you can loop though just the first level and access each thumbnail within that first level.

    $array = array(); //your array here
    foreach($array as $item)
    {
        $imageURL = $item['image']['sizes']['home-page'];
        echo $imageURL, ' <br />';
    }
    
  2. 2nd version, maybe even better

    function search_key_recursive($key, $array)
    {
        $result = array();
    
        foreach($array AS $k => $v)
        {
            if(is_array($v))
            {
                $result = array_merge($result, search_key_recursive($key, $v));
            }
            else 
            {   
                if($key === $k)
                {
                    array_push($result, $v);
                }           
            }
        }
        return $result;
    } 
    
    $r = search_key_recursive('home-page', $myArray);
    
    var_dump($r);
    
  3. In case you need to avoid declaring item manually and adding it a bit of “spicy” you could start from something like this

    function search_key_recursive($ay, $search)
    {
        array_walk_recursive($ay, function($aItem, $aKey, $search)
        {
            if ($aKey == $search)
            {
                echo $aItem . '<br />';
            }
        }, $search);
    }  
    
    search_key_recursive($myArray, 'home-page');