В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Вот объяснение PHP.net того, почему оно делает это:
Точки во входящих именах переменной
Как правило, PHP не изменяет названия переменных, когда они передаются в сценарий. Однако нужно отметить, что точка (период, точка) не является допустимым символом в имени переменной PHP. По причине посмотрите на него:
<?php $varname.ext; /* invalid variable name */ ?>
Теперь, то, что видит синтаксический анализатор, является переменной, названной $varname, сопровождаемым оператором объединения строк, сопровождаемым barestring (т.е. закрыл кавычки строка, которая не распознает никаких известных ключевых или зарезервированных слов), 'расширение'. Очевидно, это не имеет намеченного результата.
поэтому важно отметить, что PHP автоматически заменит любые точки во входящих именах переменной с подчеркиваниями.
Это от http://ca.php.net/variables.external .
кроме того, согласно этот комментарий эти другие символы преобразовываются в подчеркивания:
полный список символов имени поля, которые PHP преобразовывает в _ (подчеркивание), следующий (не просто точка):
- chr (32) () (пространство)
- chr (46) (.) (точка)
- chr (91) ([) (открывают квадратную скобку)
- chr (128) - chr (159) (различный)
, Таким образом, похоже, что Вы застреваете с ним, таким образом, необходимо будет преобразовать подчеркивания назад в точки в сценарии с помощью предложение dawnerd (я просто использовал бы str_replace все же.)
Причина это происходит, из-за старой register_globals функциональности PHP. символ не является допустимым символом в имени переменной, таким образом, убежища PHP он к подчеркиванию для проверки существуют совместимость.
Короче говоря, это не хорошая практика, чтобы сделать периоды в переменных URL.
Давно ответ на вопрос, но на самом деле есть лучший ответ (или обходной путь). PHP позволяет вам использовать необработанный входной поток , поэтому вы можете сделать что-то вроде этого:
$query_string = file_get_contents('php://input');
, который выдаст вам массив $ _POST в формате строки запроса с точками, которые должны быть.
Вы можете затем проанализировать его, если вам нужно (согласно комментарий автора ).
<?php
// Function to fix up PHP's messing up input containing dots, etc.
// `$source` can be either 'POST' or 'GET'
function getRealInput($source) {
$pairs = explode("&", $source == 'POST' ? file_get_contents("php://input") : $_SERVER['QUERY_STRING']);
$vars = array();
foreach ($pairs as $pair) {
$nv = explode("=", $pair);
$name = urldecode($nv[0]);
$value = urldecode($nv[1]);
$vars[$name] = $value;
}
return $vars;
}
// Wrapper functions specifically for GET and POST:
function getRealGET() { return getRealInput('GET'); }
function getRealPOST() { return getRealInput('POST'); }
?>
Очень полезно для параметров OpenID, которые содержат оба '.' и "_", каждый из которых имеет определенное значение!