2013-11-15 3 views
0

Здравствуйте милые люди ...Доступ третьего уровня массива

Я использую плагин Advanced Пользовательских полей для WordPress и I пытаются выяснить, как я могу получить доступ к некоторому значению из массива в массиве в массив.

Вот мой массив:

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

Мне нужно, чтобы получить URL хранится в ["home-page"] для каждого из четырех изображений в массиве, как это для изображения правильного размера и, очевидно, она должна цикл через весь массив. В принципе, мне нужно понять, как получить доступ к этому уровню массива. Я кое-что прочитал, но я все еще не понимаю. Нужно ли мне несколько циклов foreach?

До сих пор у меня есть это:

$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 />";        } 
       } 
      } 
     } 

Похоже, выход буква Н в несколько раз. Может ли кто-нибудь сказать мне, что я делаю неправильно? Возможно, это лучший способ сделать это, но я хотел бы это понять.

Приветствие Toby

+2

'$ array [0] ['image'] ['sizes'] ['home-page'];' Вы можете уйти с одним циклом для первого ключа. 'foreach ($ array as $ value) {echo $ value ['image'] ['sizes'] ['home-page'];}' –

+0

Убедитесь, что вы проверяете погоду или нет, что существует в цикле, чтобы избежать uglay PHP ошибки: if (! array_key_exists ('image', $ value) ||! array_key_exists ('sizes', $ value ['image']) ||! array_key_exists ('home-page', $ value ['image'] ['sizes'])) {/ * обрабатывать ошибку * /} –

+1

Майк, рассказы о вас расскажут вокруг огня в течение следующих нескольких поколений. Как один человек пожертвовал пару минут, чтобы найти решение для дрянного разработчика WordPress и как это решение работало отлично, в первый раз. Родилась легенда. Спасибо :) –

ответ

2

Если у вас есть массив многоуровневого, вы можете просто обратиться к конкретному пункту, используя все ключи в одном вызове:

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

В вашем случае, вы можете цикл, хотя только на первом уровне и получить доступ к каждому миниатюре на этом первом уровне.

$array = array(); //your array here 
foreach($array as $item) 
{ 
    $imageURL = $item['image']['sizes']['home-page']; 
    echo $imageURL, ' <br />'; 
} 
0

В случае, если вам необходимо, чтобы избежать объявления элемент вручную и добавить его немного «пряный» вы могли бы начать с чего-то вроде этого

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

2-й вариант, может быть, даже лучше

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); 
Смежные вопросы