Проверка синтаксиса PHP и сервера не согласны.Синтаксическая проверка правильна? - PullRequest
0 голосов
/ 22 июля 2011

Проверка синтаксиса, на которую я ссылаюсь, - это аккуратный маленький инструмент , который я использовал, чтобы помочь мне проверить мой код перед его фиксацией через наш tortoiseSVN. Это никогда не вводит меня в заблуждение до сегодняшнего дня.

Я сделал простую функцию, чтобы найти порядок величины переданного числа, неполный, но включенный ниже:

function( $graphMax )
{
$a = (int)log10( $graphMax );
echo "<br><br>GRAPHMAX LOG-10: " . $a . "<br><br>";
$a = pow( 10 , $a );
return $a;
}

Это вернет самое низкое значение этого порядка (10000 для чисел от 10 000 до 99 999).

У меня проблема с этой частью функции:

$a = (int)log10( $graphMax );

Проверка синтаксиса говорит, что в синтаксисе нет ошибок, когда я копирую / вставляю в него весь файл, но когда я отправляю и запускаю его на нашем сервере, я получаю:

Parse error: syntax error, unexpected '(', expecting T_STRING in /*/global_functions.php on line 364

по запросу, это код над функцией:

function countSections( $testID )

{ require ('config.php');

//Connect to database server
$dsl_sqlh = mysql_connect( $dsl_db_host, $dsl_db_user , $dsl_db_pass )
      or die ("Unable to connect");
mysql_select_db ( $dsl_db , $dsl_sqlh) or die ("Unable to select database");

//Get Section ID.
//With this we can query the correct section 
$secQuery = sprintf("SELECT test_section_name FROM v_ak47_test_section WHERE ak47_testhistory_id= $testID and obsolete = 0");
$secResults = mysql_query($secQuery , $dsl_sqlh);
$rows = mysql_num_rows( $secResults );  

if( $rows > 0 )
{   
    return $rows;
}
else
{
    echo "<br><br>Test has no sections! Check test ID provided.<br><br>";
    return null;
}

}

Ответ: Я не назвал функцию. Я понятия не имею, как я пропустил это. Рано ... Мне нужно больше кофе :( Спасибо всем за помощь! Извините, что это было так неестественно. Мои последние несколько постов были такими:

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

Вам нужно дать имя вашей функции

function {ENTER NAME HERE}( $graphMax )
{
   $a = (int)log10( $graphMax );
   echo "<br><br>GRAPHMAX LOG-10: " . $a . "<br><br>";
   $a = pow( 10 , $a );
   return $a;
}
1 голос
/ 22 июля 2011

Разница, скорее всего, в том, что вы используете PHP 5.2 на сервере, но отметили 5.3, когда запускаете проверку синтаксиса (по умолчанию).Анонимные функции не допускаются в 5.2, но есть в 5.3.Выберите опцию 5.2 и снова запустите проверку синтаксиса, вы получите ту же ошибку, о которой вы сообщили.

http://php.net/manual/en/functions.anonymous.php

Ваш синтаксис равен , допустим 5.3, просто нетделать что-либо.

Если сомневаетесь, доверяйте тому, что говорит сервер:)

...