Когда переменная содержит функцию, почему она автоматически выполняет PHP - PullRequest
0 голосов
/ 15 февраля 2011

Рассмотрим следующее:

$result = mysql_query($sql);

Почему это выполняется? Я мог бы понять, если бы я написал это:

mysql_query($sql);

И это было выполнено? но не является ли смысл переменной «хранить» вещи, а не выполнять их? Я далеко от цели?

Ответы [ 4 ]

3 голосов
/ 15 февраля 2011

Если вы выполните

mysql_query($sql);

, вывод функции будет потерян, что в большинстве случаев не годится; -)

Таким образом, вы хотите сохранить выходные данные функциив переменной.И оператор для этого "=".

Вы должны учитывать, что, набрав

$x = 1 + 1;

, вы хотите $ x = 2;а не "1 + 1" как строка, которая в основном имеет тот же эффект.

3 голосов
/ 15 февраля 2011

Работает так, как задумано: $result присваивается результат операции mysql_query(), которую вы вызываете.

Вероятно, вы хотите передать саму функцию, как JavaScript позволяет:

function x() { alert("Hi"); }

window.onload = x;

window.onload();  // will alert "Hi"

это было бы возможно, используя что-то вроде этого (пре-PHP 5.3):

$result = create_function("\$sql", "mysql_query(\$sql);");

или в PHP 5.3:

$result = function($sql) { mysql_query(\$sql); }

вы можетев обоих случаях вызовите созданную функцию:

$result($sql);

практика передачи функций гораздо, гораздо реже в PHP, чем в Javascript.

0 голосов
/ 15 февраля 2011

Если вы напишите mysql_query($sql);, он выполняется и возвращает значение. В этом случае значение не перехватывается, поэтому оно теряется. Если вы напишите $result = mysql_query($sql);, оно будет выполнено и возвращаемое значение будет обработано. Так работает функция на любом языке (даже в JS).

Если вы хотите «сохранить» функцию, вы можете использовать что-то вроде

$fct = 'mysql_query';
$result = $fct($sql);

или в PHP> 5.3 вы можете использовать замыкания, что также позволяет вам установить значение

$fct = function () use ($sql) {
    return mysql_query($sql);
}
$result = $fct();
0 голосов
/ 15 февраля 2011

Это в основном делается, когда функция возвращает значение.

Более поздний оператор будет выполнен успешно, но вы не сможете использовать данные, полученные при извлечении.

Первый перечисленный оператор возвращает набор результатов в соответствии с выполнением запроса и присваивает его переменной $ result.

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