2014-01-06 5 views
0

나는 https://github.com/humanmade/Custom-Meta-Boxes/을 사용하여이 사용자 정의 반복 가능한 사용자 정의 필드를 wordpress로 만듭니다. 주어진 배열은 다음과 같습니다.PHP foreach 다중 배열

Array 
(
    [0] => Array 
     (
      [photoset-caption] => Array 
       (
        [cmb-field-0] => Caption1 
        [cmb-field-1] => Caption2 
        [cmb-field-2] => Caption3 
        [cmb-field-3] => Caption4 
       ) 

      [photoset-image] => Array 
       (
        [cmb-field-0] => 17 
        [cmb-field-1] => 16 
        [cmb-field-2] => 15 
        [cmb-field-3] => 14 
       ) 

     ) 

    [1] => Array 
     (
      [photoset-caption] => Array 
       (
        [cmb-field-0] => Caption1 
        [cmb-field-1] => Caption2 
        [cmb-field-2] => Caption3 
        [cmb-field-3] => Caption4 
       ) 

      [photoset-image] => Array 
       (
        [cmb-field-0] => 17 
        [cmb-field-1] => 16 
        [cmb-field-2] => 15 
        [cmb-field-3] => 14 
       ) 

     ) 

) 

이 루프는 이것입니다.

// get the custom fields for this post 
    $photoset = get_post_meta($post->ID, 'photoset_group_fields', false); 

     echo '<div class="photoset">'; 
     echo '<div class="photoset-row">'; 

     foreach($photoset as $photosetloop){ 
     echo '<figure class="photoset-item">'; 
     echo '<div>' . wp_get_attachment_image($photosetloop['photoset-image'], 'large') . '</div>'; 
     echo '<figcaption>' . $photosetloop['photoset-caption'] .'</figcaption>'; 
     echo '</figure>'; 
     } 

     echo '</div>'; 
     echo '</div>'; 

그래서 루프에는 .photoset-item이 있고 내부에는 이미지와 캡션이 있습니다. 내 질문을 foreach하는 방법, 감사합니다.

배열에 대한 업데이트를했는데 루프가있는 그룹이 있습니다.

답변

5

이 두 foreachs를 만들기 위해의 가장 간단한 방법, 당신은 당신이뿐만 아니라 원하는 경우이 기능을 재귀 할 수 있습니다.

<?php 
$photos =array(
    'photoset-caption' => array(
      'cmb-field-0' => 'Caption1', 
      'cmb-field-1' => 'Caption2', 
      'cmb-field-2' => 'Caption3', 
      'cmb-field-3' => 'Caption4' 
    ), 
    'photoset-image' => array(
      'cmb-field-0' => 17, 
      'cmb-field-1' => 16, 
      'cmb-field-2' => 15, 
      'cmb-field-3' => 14 
    ) 
); 

    foreach($photos as $k => $photo){ 

     echo '<h1>'.$k.'</h1>'; 

     foreach($photo as $key => $value){ 
      echo $key.': '. $value.'<br/>'; 
     } 
     echo '<hr/>'; 
    } 

확인 여기에 예 : example

1

가장 우아한 방법은 아니지만이 경우에는 작동합니다.

$arr = Array 
(
    "photoset-caption" => Array 
    (
     "cmb-field-0" => "Caption1", 
     "cmb-field-1" => "Caption2", 
     "cmb-field-2" => "Caption3", 
     "cmb-field-3" => "Caption4" 
    ), 

"photoset-image" => Array 
    (
     "cmb-field-0" => 17, 
     "cmb-field-1" => 16, 
     "cmb-field-2" => 15, 
     "cmb-field-3" => 14 
    ) 
); 

$count = count($arr["photoset-caption"]); 
for($i = 0; $i < $count; ++$i) { 
    echo 'Loop #'.$i.'<br>'; 
    echo $arr["photoset-caption"]["cmb-field-".$i], '<br>'; 
    echo $arr["photoset-image"]["cmb-field-".$i], '<br>'; 
    echo '<br>'; 
} 

당신은 여기에 붙여 넣을 수 있습니다 : http://writecodeonline.com/php/