2016-09-15 2 views
1

Im пытается echo возвращаемое значение из 2 функций с пространством между ними, я пытался:печать 2 функции с пробелом между?

class="<?php echo strtolower($class).' '.is_array($arr) ? 'yes' : 'no'; ?>" 

Но выше ничего не выводит. Где я иду не так?

+1

Этот код должен обязательно выводить 'yes', а не« ничего ». – deceze

ответ

1

Используйте это:

class="<?php echo strtolower($class); ?> <?php is_array($arr) ? echo 'yes' : echo 'no'; ?>" 

Вы распечатать результат функции (что является истинным или ложным). Таким образом, вы выходной строковая Да или Нет

+2

Не нужно писать эхо два раза. Читайте о принципе DRY. – b0ne

+1

Я согласен с принципом DRY и вашим комментарием, что он не нужен. Однако я считаю, что после этого он становится более читабельным/поддерживаемым (когда у вас в команде есть менее опытные/опытные люди). – Cagy79

+1

Коротко код всегда более удобен в обслуживании, и в этой ситуации читаемость не является проблемой – b0ne

2
<?php echo strtolower('someText').' '.(is_array([]) ? 'yes' : 'no'); ?> 

результата: SOMETEXT да

3

Просто группа до тройной части.

echo strtolower($class).' '.(is_array($arr) ? 'yes' : 'no');

1

Я думаю, вы должны положить

class="<?php echo strtolower($class).' '.(is_array($arr) ? 'yes' : 'no'); ?>" 

Обратите внимание на "()" вокруг is_array

4

Ваш код говорит «является конкатенация strtolower(…), ' ' и логическое truthy ?» И так как это всегда так, он всегда должен выводить yes. Лучше всего этого можно избежать, если не с помощью конкатенации, но передавая отдельные аргументы echo:

echo strtolower($class), ' ', is_array($arr) ? 'yes' : 'no'; 

Теперь последнее тройная выражение не имеет никакого отношения к двум предыдущим.

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