Мне нужно создать var как $myvar-test;
но это недействительно или?
Нет, это неверно. Причина – знак минус (-). В PHP переменные могут содержать 0-9a-zA-Z_, за исключением того, что он не должен начинаться с числа, и буквы Юникода разрешены. См .: http://www.php.net/manual/en/language.variables.basics.php
Переменные в PHP представлены знаком доллара, за которым следует имя переменной. Имя переменной чувствительно к регистру.
Variable names follow the same rules as other labels in PHP. A valid
имя переменной начинается с буквы или подчеркивания, за которой следует любое количество букв, цифр или символов подчеркивания. В качестве регулярного выражения оно выражается следующим образом: «[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] * '
И несколько примеров:
<?php $var = 'Bob'; $Var = 'Joe'; echo "$var, $Var"; // outputs "Bob, Joe" $4site = 'not yet'; // invalid; starts with a number $_4site = 'not yet'; // valid; starts with an underscore $täyte = 'mansikka'; // valid; 'ä' is (Extended) ASCII 228. ?>
Есть обходные пути, но это действительно, действительно уродливо. Лучше используйте подчеркивание или camelCase или массив, где вы можете использовать любую строку в качестве имен ключей.
Это будет обходным путем:
${'a-b'} = 'foo'; var_dump(${'a-b'}); // string(3) "foo"
Вы не можете использовать тире в именах переменных.
Из документации:
Переменные в PHP представлены знаком доллара, за которым следует имя переменной. Имя переменной чувствительно к регистру.
Имена переменных следуют тем же правилам, что и другие метки в PHP. Правильное имя переменной начинается с буквы или подчеркивания, за которой следует любое количество букв, цифр или символов подчеркивания. В качестве регулярного выражения оно выражается следующим образом: «[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] * '
Источник: http://www.php.net/manual/en/language.variables.basics.php
знак минус, используемый для вычитания
вы получите тот же результат с такими переменными, как $ myvar * test $ myvar $ test, $ myvar; test $ myvar (тест и т. д.).
Просто не используйте специальный синтаксис в именах переменных.
Обратите внимание, что имена ключей массива могут содержать почти любой символ, даже национальных языков
Из документации PHP
Имена переменных следуют тем же правилам, что и другие метки в PHP. Правильное имя переменной начинается с буквы или подчеркивания, за которой следует любое количество букв, цифр или символов подчеркивания. В качестве регулярного выражения оно выражается следующим образом: «[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] * '
Таким образом, ваше имя переменной недействительно в соответствии с этими правилами.
Нет, это не так.
http://www.php.net/manual/en/language.variables.basics.php
Имена переменных следуют тем же правилам, что и другие метки в PHP. Правильное имя переменной начинается с буквы или подчеркивания, за которой следует любое количество букв, цифр или символов подчеркивания.
Это неверно, но если вы получите его, например, от JSON – это обходное решение:
print_r($JSONObject); stdClass Object ( [psr-0] => stdClass Object ( [MyBundle] => 'MyPath' ) )
… пытается получить доступ к $ JSONObject-> psr-0; не работает – поэтому вы можете вывести stdClass в Array :
$JSONArray = (array)$JSONObject; print_r($JSONArray); Array ( [psr-0] => stdClass Object ( [MyBundle] => 'MyPath' ) )
… теперь вы можете легко получить доступ к $ JSONArray ['psr-0'] !