2014-12-21 3 views
0

Это мой простой код петлителяДинамические переменные в петлителя

foreach($cloud as $item) { 

    if ($item['tagname'] == 'nicetag') { 
     echo $item['tagname']; 
      foreach($cloud as $item) { 
       echo $item['desc'].'-'.$item['date']; 
      } 
    } else 
     //... 
    } 

мне нужно использовать if метод в этом петлителя, чтобы получить метки с одинаковыми именами, но Diferent описаниями и датами. Проблема в том, что я не знаю названия каждого тега, потому что любому пользователю разрешено создавать эти теги. Я не очень разработчик php, поэтому я сори, если это вопрос с манекенами и спасибо за любые ответы!

+0

Не могли бы вы объяснить немного больше о том, что Вы хотите сделать? –

+0

Привет, Пол. Мне нужно найти все значения [tagname] в многомерном массиве, а если значение повторяется, зациклируйте там значения [desc] и [date]. В выводе это должно быть примерно так: - первый тег - nice description 12 - 02-02-2014 - nice description 52 - 05-02-2014 - nice description 13 - 07-02-2014 - второй тег - nice description 11 - 03-02-2014 - nice description 51 - 04-02-2014 Возможно, мне нужно перестроить массив? – wpanin

ответ

1

Одним из возможных решений является объявить временную переменную, которая будет содержать тэг, который в настоящее время петельные через:

$currentTagName = ''; 
foreach($cloud as $item) { 
    if ($item['tagname'] != $currentTagName) { 
     echo $item['tagname']; 
     $currentTagName = $item['tagname']; 
    } 

    echo $item['desc'] . '-' . $item['date']; 
} 

Я полагаю, что ваша структура массива выглядит следующим образом:

$cloud array(
    array('tagname' => 'tag', 'desc' => 'the_desc', 'date' => 'the_date'), 
    array('tagname' => 'tag', 'desc' => 'the_desc_2', 'date' => 'the_date_2'), 
    ... 
); 

НО

Это решение вызывает проблему - если ваш массив не сортируется по тэгу, вы можете получить повторяющиеся тэги.

Так что лучшим решением было бы пересмотреть структуру массива, как это:

$cloud array(
    'tagname' => array (
     array('desc' => 'the_desc', 'date' => 'the_date'), 
     array('desc' => 'the_desc_2', 'date' => 'the_date_2') 
    ), 
    'another_tagname' => array (
     array('desc' => 'the_desc_3', 'date' => 'the_date_3'), 
     ... 
    ) 
); 

, а затем вы можете получить данные, как это:

foreach ($cloud as $tagname => $items) { 
    echo $tagname; 

    foreach($items as $item) { 
     echo $item['desc'] . '-' . $item['date']; 
    } 
} 
+0

Спасибо !!! Это он :) Могу ли я спросить вас, как переопределить этот массив? Это будет действительно замечательно – wpanin

+0

Вам нужно переписать функцию/метод, где этот массив построен, потому что реструктуризация текущего массива не очень эффективна. –

+0

Спасибо за ваш ответ! Проблема в том, что я получаю массив, используя WP_Query. Я действительно не верю, что могу переписать эту функцию самостоятельно ... так что, возможно, я просто сортирую массив по тэгу ... – wpanin

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