Неверная переменная PHP, например $ myvar-test?

Мне нужно создать 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'] !