2

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.

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

3
  • 2
    $array[0]['image']['sizes']['home-page']; You could get away with one loop for the first key. foreach ($array as $value) { echo $value['image']['sizes']['home-page'];} Commented Nov 15, 2013 at 12:51
  • Make sure you check weather or not that exists in the loop to avoid uglay PHP errors: if(!array_key_exists('image',$value) || !array_key_exists('sizes',$value['image']) || !array_key_exists('home-page',$value['image']['sizes'])) { /*handle the error*/ } Commented Nov 15, 2013 at 13:02
  • 1
    Mike, stories about you will be told around the fire for generations to come. How one man sacrificed a couple of minutes to find a solution for a shoddy WordPress developer and how that solution worked perfectly, first time. A legend is born. Thanks :) Commented Nov 15, 2013 at 13:16

3 Answers 3

4

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 />';
}
Sign up to request clarification or add additional context in comments.

Comments

1

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);

Comments

0

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');

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.