Добрый день!
Сильно помидорами не кидайте, я не специалист в php, поэтому Вас и спрашиваю.
В общем есть объект $media_this_archive типа:
array(10) {
[0]=>
object(stdClass)#203 (5) {
["id"]=>
string(2) "98"
["name"]=>
string(115) "Кафедральный собор во имя Казанской иконы Божией Матери в Чите"
["src"]=>
string(116) ""
["category_id"]=>
string(1) "0"
["tip"]=>
string(1) "1"
}
[1]=>
object(stdClass)#204 (5) {
["id"]=>
string(2) "96"
["name"]=>
string(49) "Дворец Бутиных (ГТРК "Чита")"
["src"]=>
string(116) ""
["category_id"]=>
string(1) "0"
["tip"]=>
string(1) "1"
}
[2]=>
object(stdClass)#205 (5) {
["id"]=>
string(2) "95"
["name"]=>
string(78) "Алханайский национальный парк (ГТРК "Чита")"
["src"]=>
string(116) ""
["category_id"]=>
string(1) "0"
["tip"]=>
string(1) "1"
}
[3]=>
object(stdClass)#206 (5) {
["id"]=>
string(2) "94"
["name"]=>
string(67) "Заповедник Сохондинский (ГТРК "Чита")"
["src"]=>
string(116) ""
["category_id"]=>
string(2) "37"
["tip"]=>
string(1) "1"
}
Что из него хочется получить вот такое чудо
вывод , то есть вверху мы должны видеть список категорий который считываются по category_id, а внизу естественно вывод содержимого каждой категории включая кнопочку все.
Что я сделал:
<ul class="uk-subnav uk-subnav-pill" data-uk-switcher="{connect:'#switcher-content'}">
<?php foreach ($arrayCategory as $item):?>
<li><a href="#"><?php echo getCategoryNameForId($item,$category_photo); ?></a></li>
<?php endforeach?>
</ul>
<div id="switcher-content" class="uk-switcher">
<?php foreach ($arrayCategory as $items):
$category_items =getArrayForCategoryId($item, $media_this_archive);
?>
<div class="uk-active album">
<?php foreach($category_items as $item): ?>
<?php if ($item->tip == 2):?>
<div class="items-image">
<a href="http://zabaikalom.ru/upload/sv/<?php echo $item->src; ?>.jpg" rel="lightbox[maxigallery]" target="_blank" title="<?php echo $item->name; ?>">
<img src="http://zabaikalom.ru/upload/sv/<?php echo $item->src; ?>.jpg" width="250" height="200" alt="<?php echo $item->name; ?>" title="Кликните для увеличения" class="photo"><br>
<strong><?php echo $item->name; ?></strong>
</a>
<button value="http://zabaikalom.ru/upload/sv/<?php echo $item->src; ?>.jpg" type="button" onclick="download(); return false;" class="uk-button uk-button-mini uk-button-success"> <i class="uk-icon-arrow-down"></i> Скачать</button>
</div>
<?php endif ?>
<?php if ($item->tip==1):?>
<div class="items-image">
<a class="" href="#">
<?php echo $item->src ?>
<strong><?php echo $item->name; ?></strong>
</a>
</div>
<?php endif ?>
<?php if ($item->tip==0):?>
<div><a class="items-image" href="#"><?php echo $item->src ?><strong><?php echo $item->name; ?></strong></a></div>
<?php endif ?>
<?php endforeach; ?>
</div>
<?php endforeach; ?>
<pre>
<?php var_dump($media_this_archive) ?>
<?php var_dump($arrayCategory) ?>
</pre>
</div>
//массив категорий
$arrayCategory = getArrayCategoryForThisArchive($media_this_archive);
// получаем его так
//Получить все категории в заданном массиве
function getArrayCategoryForThisArchive($media_this_archive){
$i=0;
foreach ($media_this_archive as $item){
$array[$i++] = $item->category_id;
}
return array_unique($array);//выводим только уникальные значения
}
//Получить все из архива по ID категории
function getArrayForCategoryId($category_id, $media_this_archive){
$i=0;
foreach ($media_this_archive as $item){
if ($item->category_id === $category_id){
$array[$i++]=$item;
}
else $array = 'Что то не так';
}
return $array;
}
и то что я сделал вроде бы работает, но не всегда, а именно с
картинками все отлично, хотя может я ошибаюсь а вот с
фреймами получаю ошибку
: Object of class stdClass could not be converted to string in on line.
Может быть есть другое решение это делать? Может другой алгоритм? Желательно не лазать каждый раз в БД и делать WHERE, а то притормаживает.