2010-11-30 2 views
8

Я пишу скрипт, чтобы сделать куски текста и отправить его с помощью SMS. Раньше сегодня я просматривал некоторый код, чтобы разделить строку на куски, и я увидел то, что я никогда раньше не видел. Я говорю о ";" сразу после «}» в en фрагмента.Точка с запятой после закрытия фигурной скобки в PHP

Почему эта двоеточие? Я знаю, что это работает, но я не знаю, добавляет ли он некоторую семантику или какую-то инструкцию к интерпретатору, кто-нибудь знает, для чего это?

while(1) 
{ 
    $length = (strlen($output)+strlen($words[$i])); 
    if($length>$new_max) 
    { 
     if(count($words) > 0) 
     { 
      $out_array[] = $output; 
      $output = ''; 

     } 
     else 
     { 
      break;  
     } 
    } 
    else 
    { 
     $output = $output." ".$words[$i]; 
     ++$i; 
    }; 
}; 

EDIT: кажется очевидным, что точка с запятой, а также множество вместе с запятой не имеет никакого эффекта над результатом, но, вы знаете, если она имеет некоторое влияние на переводчик? он выполняет какую-то задачу (внутренне), когда анализирует ее?

+0

Это поднимает хороший вопрос, что никто не прикасался на другой, чем «лучшее предположение». Что происходит на уровне компилятора, когда у вас есть пустой оператор? – 2015-02-11 23:01:03

ответ

12

Я думаю, что эти две точки с запятой ничего не делают здесь. Вероятно, это интерпретируется как пустое выражение сразу после if/while.

+0

Я думаю, что это беспроблемно, но я хочу убедиться: спасибо. – SubniC 2010-11-30 15:38:53

+0

Эван прав. Дополнительная точка с запятой бессмысленна. – DampeS8N 2010-11-30 15:41:01

+0

Правильно, абсолютно ничего не происходит, когда находятся две точки с запятой. – BoltClock 2010-11-30 15:41:22

4

Это не нужно. Они не повредили сценарий, просто лишний. У программиста, вероятно, была привычка добавлять точки с запятой к концу каждого утверждения. Возможно, он получил эту привычку с другого языка программирования, возможно, его IDE показывал ошибки без запятой или, может быть, он просто новичок. В любом случае, нет ни боли, ни помощи. Также тот факт, что программист использует while (1), говорит мне, что он либо очень ленив, потому что обычно программист записывает while (true), единственная причина для ввода в то время как 1 - потому, что он меньше набирает текст. Программист с любым формальным обучением не будет писать в то время как (1), а не while (true). Это только мое мнение, но оно основано на более чем 10-летнем программировании на трех языках.

0

Некоторые люди используют // endwhile или // endif для сигнала, откуда он пришел. Другие кладут полуколоны после брекетов. Оба метода безвредны и просто сводятся к разработчику.

Я бы рискнул предположить, что этот программист не доверяет их собственному кодированию, а также кодирует в текстовом режиме без стиля - позиции скобки, несогласованный интервал и время (1) справедливо. .. рекомендую не делать этого.

1

В некоторых случаях вам нужно иметь точку с запятой после закрывающей фигурной скобки!

Пример:

if(1==1): 
    if(true){ echo "it's true"; } //no semicolon here => syntax error! 
else: 
    echo "no never ever"; 
endif; 

Конечно, вы would't использовать альтернативный синтаксис для управляющих структур, если есть только код PHP.

Но если у вас есть сочетание кода HTML и PHP, вы можете использовать альтернативный синтаксис для структур управления (альтернативный синтаксис делает код более понятным и понятным), но проблема в том, что в некоторых случаях плагин или например, синтаксический анализатор cms может создавать оператор if с фигурными скобками (без «закрывающей точки с запятой») непосредственно перед «else:», и это приведет к синтаксической ошибке в полученном php-файле.

Приведенный выше код будет работать так:

if(1==1): 
    if(true){ echo "it's true"; }; 
else: 
    echo "no never ever"; 
endif; 
Смежные вопросы