2013-04-13 5 views
1

Я сделал google для этого, но не смог получить правильное решение. Может ли кто-нибудь помочь мне проверить, пуст ли ассоциативный массив или нет. Заранее спасибо.В smarty, как проверить, пуст ли ассоциативный массив или нет?

+1

Прошу прощения, но мне трудно поверить, что вы положили «smarty array empty» в google и не смогли найти ответ? попробуйте некоторые подсказки для первого результата, такие как '! $ array' или' $ array | @count == 0', в зависимости от того, может ли ваш массив быть чем-то другим, кроме пустого или массивом, и вы хотите проверить это также.. – Nanne

ответ

3

В Smarty3, вы можете использовать PHP's empty() function:

somefile.php

<?PHP 
$smarty->assign('array',array()); 
$smarty->display('template.tpl'); 

template.tpl

{if empty($array)} 
    Array is empty 
{else} 
    Array is not not empty 
{/if} 

Выходы Array is empty.

0

Вы можете поместить переменную непосредственно в оператор if, если вы уверены, что он всегда будет установлен (пустой или нет), например {if !$array}. Если вы ищете нечто похожее на тернарный оператор, вы можете использовать модификатор переменной, называемый default например. $array|default:"empty". Также есть помощь in smarty docs и их forum. Использование пустого PHP также сработало для меня.

1

Кажется, что Smarty просто проверьте, существует ли массив. Например

somefile.php

<?PHP 
$smarty->assign('array',array()); 
$smarty->display('template.tpl'); 

template.tpl

{if $array} 
    Array is set 
{else} 
    Array is not set 
{/if} 

Выходы Array is set.

В то время как в PHP ...

<?PHP 
$array = array(); 
if($array){ 
    echo 'Array is set'; 
}else{ 
    echo 'Array is not set'; 
} 

выходы Array is not set.

Чтобы решить эту проблему, я сделал немного обходной путь: создал модификатор для Smarty с помощью следующего кода: modifier.is_empty.php

<?PHP 
function smarty_modifier_is_empty($input) 
{ 
    return empty($input); 
} 
?> 

Сохранить, что фрагмент в SMARTY_DIR, внутри каталога plugins с именем modifier.is_empty.php, и вы можете использовать его как это:

template.tpl (учитывая, используя тот же somefile.php)

{if !($array|is_empty)} 
    Array is not empty 
{else} 
    Array is empty 
{/if} 

Это будет выводить Array is empty.

Примечание об использовании этого модификатора Agains используя @count модификатор:
@count будет подсчитать количество элементов внутри массива, в то время как этот модификатор будет сказать только тогда, когда она пуста, так что этот вариант лучше производительность мудрого

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