2013-08-24 2 views
0

Этот код должен объяснить все это ..Использование переменной вне foreach с инструкцией if?

foreach($this->sections as $k => $section){ 

    $preview = array(); 

    foreach ($section['fields'] as $k => $type) {        
     $preview[] = $type['type']; 
    } 

    if ($preview == 'header_preview'){ 
     echo $preview; 
     // I will loop content here based on the $section loop NOT the $type loop 
    } 

} 

Мне просто нужно, чтобы получить каждый $section['fields'] то вне этого цикла, который снова получает список всех $section['fields'] затем использовать один из этих типов полей для создания если заявление , Вышеуказанное не работает, здесь я покажу вам рабочий код.

foreach($this->sections as $k => $section){ 

    foreach ($section['fields'] as $k => $type) {        
     if ($type['type'] == 'header_preview'){ 
      //I work but im in a nested loop I need out 
     } 
    } 

    //The main loop here.. the above loop is just to setup data to use inside this loop? Make sense? I hope! 

} 

Я надеюсь, что это имеет смысл ...

Отрывок из var_dump $this->sections

array(26) { ["general"]=> array(3) { ["title"]=> string(7) "General" ["icon"]=> string(106) "img/icons/sub.png" ["fields"]=> array(5) { [0]=> array(6) { ["id"]=> string(10) "responsive" ["type"]=> string(6) "switch" ["title"]=> string(35) "Responsive" ["desc"]=> string(10) "Responsive" ["options"]=> array(2) { [1]=> string(2) "On" [0]=> string(3) "Off" } 
+0

ваш первый код, безусловно, неправильно, но вы можете объяснить, пожалуйста, что вы пытаетесь сделать? – MaveRick

+0

Ну, я зациклирую каждый '$ раздел', есть типы полей, и я пытаюсь исключить тип поля, но единственный способ доступа к этим типам - с помощью цикла foreach –

+1

вы можете добавить' var_dump ($ this-> sections) ' перед вашим родительским циклом и покажем нам результат и дадим нам пример вывода, который вам нужен, чтобы установить в var '$ preview' – MaveRick

ответ

1

Это может быть возможно $ к продублирована и, следовательно, цикл не знает, что делать , Вы можете попробовать изменить $ k на $ x, посмотрите, работает ли он.

foreach($this->sections as $k => $section){ 

    $preview = array(); 

    foreach ($section['fields'] as $x => $type) {        
     $preview[] = $type['type']; 
    } 

    foreach($preview as $elem){ 
     if ($elem == 'header_preview'){ 
      echo($elem); 
     } 
    } 
} 
+0

'$ preview' - это массив, вы НЕ можете эхо-массива, если не знаете что вы набираете, тогда, пожалуйста, не давайте неправильных ответов! – MaveRick

+1

Ну, это был его код. Я не печатал. Первое, что я заметил, - это $ k, который используется дважды. –

+0

Да, дорогая, но вы не можете исправить только одну точку и оставить других, это вызовет проблему, и она выдает ошибку !, лучше понять, что он хочет сделать с его кодом, а затем ответить на вопрос;) – MaveRick

1

Хм ... Может

foreach($this->sections as $k => $section){ 

    $preview = array(); 

    foreach ($section['fields'] as $x => $type) {        
     $preview[] = $type['type']; 
    } 

    if(!in_array('header_preview', $preview)){ 

     // Here $preview DOES NOT contain 'header_preview' 
     // Do stuff 

    } 
} 
+0

Тестирование ... Мне нужно будет добавить нет! хотя .. потому что я пытаюсь исключить header_preview .. –

+1

Ahh .. то просто добавьте! перед in_array –

+0

Да, приятно выглядеть до сих пор .. нужно настроить некоторые вещи .. отправить назад здесь в мин .. спасибо за усилия –

1
$header_preview=false; 
foreach($this->sections as $k => $section){ 
    $header_preview=false;// reset the var $header_preview 
    foreach ($section['fields'] as $k => $type) {        
     if ($type['type'] == 'header_preview') $header_preview = true; 
    } 
    if($header_preview==true){ 
     //here you can add or extract from this array that has `header_preview` value for one of it's field type 
    } 
} 
+0

Я благодарю вас за ваши усилия ... Я не упомянул, что использовал «do_settings_sections» WordPress внутри цикла, новичок в этом методе/функции, но я понял, что играл с ним раньше, но не смог определить массив Я читал и не мог получить доступ к header_preview, но потом сделал еще одну попытку и получил его ... Надеюсь, я не тратил впустую ваше время, я потратил около 2 с половиной часов, слишком долго пытаясь понять это, поэтому я definitel я потратил свое время ... Я думаю, что по вашему коду не удалось, я понял, что что-то не так .. безумие, определенное Альбертом Эйнштейном, было, что я делал LOL. –

Смежные вопросы