@WebforSelf

Как вывести выбранные элементы массива PHP?

Добрый день, вопрос такого плана.

$cat_filter = '';  
	$category_id = $simpla->request->get('cid', 'integer');  // отсюда беру переменную ID чтоб найти ее и ее подкатегории.
	if($category_id && $category = $simpla->categories->get_category($category_id)) {
	$cat_filter = $category->children;

В итоге имею 2 переменные
$category_id = 59 (это айди категории которую передаю) через GET
$cat_filter = тут получаю массив (Array ( [0] => 60 [1] => 61 [2] => 62 [3] => 63 [4] => 64 [5] => 59 )

Получается тут категория главная которая в get и все ее дочерние категории.
Дальше мне нужно вывести

<categories>
<category id="59">Защита</category>
<category id="60" parentId="59">Маска сварщика</category>
<category id="61" parentId="59">Очки</category>
<category id="62" parentId="59">Костюм</category>
<category id="63" parentId="59">Краги</category>
<category id="64" parentId="59">Маски</category>
</categories>


Для этого написал функцию но которая вызывает полностью массив всех категорий, и теперь надо сравнить с тем что я вытащил выше, а именно с get главную категорию и если есть подкатегории.

$categories = $simpla->categories->get_categories();
print "<categories>";
foreach($categories as $c)
{
print "<category id='$c->id'";
if($c->parent_id>0)
    print " parentId='$c->parent_id'";
print ">".htmlspecialchars($c->name)."</category>";
}
print "</categories>";


Как сравнить $c->id с массивом $cat_filter , чтоб оставить только нужные мне категории.

Содержимое $c-id
string(2) "17" string(2) "18" string(2) "19" string(2) "20" string(2) "21" string(2) "22" string(2) "49" string(2) "52" string(2) "55" string(2) "56" string(2) "57" string(2) "58" string(2) "59" string(2) "69" string(2) "23" string(2) "24" string(2) "25" string(2) "26" string(2) "27" string(2) "28" string(2) "29" string(2) "30" string(2) "31" string(2) "32" string(2) "33" string(2) "42" string(2) "43" string(2) "44" string(2) "45" string(2) "73" string(2) "46" string(2) "47" string(2) "48" string(2) "34" string(2) "36" string(2) "72" string(2) "35" string(2) "37" string(2) "38" string(2) "50" string(2) "51" string(2) "53" string(2) "54" string(2) "60" string(2) "61" string(2) "62" string(2) "63" string(2) "64" string(2) "39" string(2) "70" string(2) "71" string(2) "40" string(2) "41" string(2) "65" string(2) "66" string(2) "67" string(2) "68"


а массив $cat_filter
[0] => 60 [1] => 61 [2] => 62 [3] => 63 [4] => 64 [5] => 59
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
hahenty
@hahenty
('•')
Для фильтрующего условия в существующий код
in_array( (int)$c->id, $cat_filter )

Для попыток заменить перебор всех категорий перебором только конкретных дочерних.
foreach( cat_filter as cid) {
  child = get_category( cid );
  print child->props;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы