Это мой простой код
foreach( $cloud as $item ) {
if ($item['tagname'] == 'nicetag') {
echo $item['tagname'];
foreach( $cloud as $item ) {
echo $item['desc'].'-'.$item['date'];
}
} else
//...
}
Мне нужно использовать if
метод в этом цикле, чтобы получить теги с одинаковыми именами, но разными описаниями и датами. Проблема в том, что я не знаю каждое имя тега, потому что любой пользователь может создавать эти теги.
Я не очень php разработчик, так что мне очень жаль, если это вопрос к чайникам и спасибо за любые ответы!
Одним из возможных решений является объявление временной переменной, которая будет содержать название тэга это в настоящее время проходит через:
$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'];
}
}
Других решений пока нет …