Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: $_POST['id'] или $_POST[id]
 
 автор: lifead   (22.08.2007 в 00:08)   письмо автору
 
 

Какой вариант обращения правильный $_POST['id'] или $_POST[id] ?

   
 
 автор: bronenos   (22.08.2007 в 00:10)   письмо автору
 
   для: lifead   (22.08.2007 в 00:08)
 

1, ибо поставьте перед этим
define('id', 1);

или просто
error_reporting(2047);

   
 
 автор: lifead   (22.08.2007 в 00:19)   письмо автору
 
   для: bronenos   (22.08.2007 в 00:10)
 

Спасиб, я тоже так думал, но почему некоторые на форуме, показывая пример решения проблемы, указывают второй вариант вывода даннын? странно это все...

   
 
 автор: cheops   (22.08.2007 в 01:10)   письмо автору
 
   для: lifead   (22.08.2007 в 00:08)
 

В свободном виде $_POST['id'], при интерполяции в строке - $_POST[id]
<?php
  
echo $_POST['id']."<br>";
  echo 
"$_POST[id]<br>";
?>

   
 
 автор: lifead   (22.08.2007 в 01:19)   письмо автору
 
   для: cheops   (22.08.2007 в 01:10)
 

А почему так? а если при интерполяции указывать 1й вариант?

   
 
 автор: cheops   (22.08.2007 в 01:26)   письмо автору
 
   для: lifead   (22.08.2007 в 01:19)
 

Если вы укажите вариант
<?php
 
echo "$_POST['id']<br>";
?>

Он будет считаться ошибочным, чтобы использовать одиночные кавычки для выделения ключа массива, придётся заключить элемент в фугурные скобки
<?php
 
echo "{$_POST['id']}<br>";
?>

   
 
 автор: lifead   (22.08.2007 в 08:13)   письмо автору
 
   для: cheops   (22.08.2007 в 01:26)
 

Но ведь можно поступить и вот так:

<?php 
 
echo "текст".$_POST['id']."текст"
?> 

и чем этот вариант хуже чем вот такое написание:

<?php
echo "текст $_POST[id] текст"
?>

   
 
 автор: cheops   (22.08.2007 в 09:44)   письмо автору
 
   для: lifead   (22.08.2007 в 08:13)
 

По большому счёту ничем... Однако, мне кажется, что второй вариант более читабельный, чем первый, кто-то может считать по другому. Вообще говоря, в промышленных языках такое количество вариаций не допускается, чтобы код не создавался кто в лес, кто по дрова. Однако, при создании PHP очень многое было заимстововано из Perl, который создавался как контекстный язык, т.е. с элементами лингвистического языка - в нём наоборот привествуется множественное решение одной и той же задачи (в отличии от ортогональных языков, где стремятся к тому, чтобы каждый класс задач решался однозначно). Вообще, для более глубокого понимания PHP полезно изучить Perl...

   
 
 автор: lifead   (22.08.2007 в 10:01)   письмо автору
 
   для: cheops   (22.08.2007 в 09:44)
 

мне наример приемлема больше такой стиль написания:

<?php  
 
echo "текст".$_POST['id']."текст";  
?> 

В нем видно что является переменной, а что строкой (наврядли еще кто-то пишет код в блокноте, а в редакторах они выделяются разными цветами).
А на безопасности скрипта как эти 2 вида сказываются?

   
 
 автор: cheops   (22.08.2007 в 10:06)   письмо автору
 
   для: lifead   (22.08.2007 в 10:01)
 

Иногда бывает сложно читать такие строки, когда переменных несколько десятков - в глазах рябит от кавычек и точек, но это дело каждого программиста (раз уж предоставляется несколько вариантов интерполяции).

>А на безопасности скрипта как эти 2 вида сказываются?
Нет, оба эквивалентны.

   
 
 автор: bronenos   (22.08.2007 в 12:43)   письмо автору
 
   для: lifead   (22.08.2007 в 10:01)
 

я пишу в блокноте

   
 
 автор: lifead   (22.08.2007 в 13:02)   письмо автору
 
   для: bronenos   (22.08.2007 в 12:43)
 

а блокнот Win или какойнибудь *nix системы?

   
 
 автор: bronenos   (22.08.2007 в 14:51)   письмо автору
 
   для: lifead   (22.08.2007 в 13:02)
 

винды, хотя чаще wordpadом

   
 
 автор: Ralph   (22.08.2007 в 21:56)   письмо автору
 
   для: lifead   (22.08.2007 в 10:01)
 

В таком случае еще более приемлимым является код вида
<?php 
echo  'текст' $_POST 'id' ]. 'текст' 
?>
,так как в случае с двойными кавычками интерпретатору приходится анализировать строку на наличие $имяпеременной для замены его на значение этой переменной,а в случае с одинарными кавычками php тупо выводит строку 'как есть',что,естественно,быстрее...Я лично всегда использую такое написание

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования