PHP неожиданный другой - PullRequest
2 голосов
/ 26 июня 2010

Я фильтрую некоторый контент на своем веб-сайте с помощью кода, специфичного для страны, я пытаюсь добавить операторы else, чтобы он не выполнял каждый фрагмент как отдельный код, за исключением того, что я пробую, выдает ошибку:

<?php if (function_exists('isCountryInFilter')) { ?>
<?php if(isCountryInFilter(array("us", "ca"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php } ?>

<?php elseif(isCountryInFilter(array("au"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }  ?>

<?php else(isCountryInFilter(array("nz"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }}  ?>

Вышеприведенное дает следующую ошибку: Parse error: syntax error, unexpected T_ELSEIF in и относится к первому, если

Ответы [ 5 ]

4 голосов
/ 26 июня 2010

Поскольку вы комбинируете PHP с прямым HTML / OUTPUT.Во время вашего кода вы печатаете пробел между конечной скобкой и ключевым словом elseif.

Интерпретатор PHP ищет сразу после ключевого слова elseif}, но он находит блок выводимых данных, поэтому он вызываетошибка.

<?php if (function_exists('isCountryInFilter')) { ?>
<?php if(isCountryInFilter(array("us", "ca"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php } ?>
<!--PHP Finds space here which it does not expect.-->
<?php elseif(isCountryInFilter(array("au"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }  ?>
<!--PHP Finds space here which it does not expect.-->
<?php elseif(isCountryInFilter(array("nz"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }}  ?>

Что вам нужно сделать, это удалить пробел, как это.

<?php if (function_exists('isCountryInFilter')) { ?>
  <?php if(isCountryInFilter(array("us", "ca"))) { ?>
    <a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
  <?php }elseif(isCountryInFilter(array("au"))) { ?>
    <a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
  <?php }else(isCountryInFilter(array("nz"))) { ?>
    <a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php}}?>

Вы заметите недостаток места вне блоков PHP.

Это должно решить вашу проблему.

3 голосов
/ 26 июня 2010

В противном случае невозможно оценить условие, оно будет выполнено, если все остальные условия будут ложными, представьте его в терминах по умолчанию для переключателя.

Это:

<?php else(isCountryInFilter(array("nz"))) { ?>
    <a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
    <?php }}  ?>

Должно быть так:

<?php else if(isCountryInFilter(array("nz"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }}  ?>
2 голосов
/ 26 июня 2010

Или даже лучше использовать распределительный шкаф для многих условий.Например:

switch($x) {
  case 1:
  ?> some html <?php
  break;
  case 2: 
  ?> more html <?php
  break;
}

Вместо закрытия тегов вы можете отобразить / напечатать html.

Это будет работать:

<?php if (function_exists('isCountryInFilter')) {
if(isCountryInFilter(array("us", "ca"))) {
?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php } elseif(isCountryInFilter(array("au"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php } elseif(isCountryInFilter(array("nz"))) { ?>
<a rel="nofollow" class='preloading gallery_image' href="#" target="_blank">
<?php }
}
?>
2 голосов
/ 26 июня 2010

вместо этого формата используйте

<?php if($foo == 1): ?>
   html code
<?php else if($foo == 2): ?>
   other html
<?php else: ?>
   more html code
<?php end; ?>
1 голос
/ 26 июня 2010

Ответ FrEaKmAn, вероятно, сработает, но я предпочитаю фигурные скобки сам. Попробуйте изменить

<?php } ?>
<?php elseif(isCountryInFilter(array("au"))) { ?>

до

<?php } elseif(isCountryInFilter(array("au"))) { ?>

Кроме того, в общем, хорошо минимизировать количество раз, когда вы входите и выходите из блоков php ...

(Как только эта часть будет исправлена, вам нужно решить проблему, указанную DamienL.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...