Динамические переменные в лупере

Это мой простой код

foreach( $cloud as $item ) {

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

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

0

Решение

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

$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'];
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]