Замена if-else

Nabari

Новичок
Добрый день! Возник вопрос. К примеру есть массив :
PHP:
$post = array (
	id => $_GET['id'],
	tag => $_GET['tag'],
	search => $_GET['search'],
	action => $_GET['action'],
	info => $_GET['info'],
	details => $_GET['details']
);
При определенном значении выводиться:
PHP:
if ($post[action] == 'register') {$title = 'Регистрация';}
if ($post[action] == 'rules') {$title = 'Правила';}
if ($post[tag] != '') {$title = $post[tag];}
if ($post[search] != '') {$title = $post[search];}
if ($post[info] != '') {$title = 'Сообщение';}
if ($post[details] == 'user') {$title = 'Мой профиль';}
if ($post[details] == 'messages') {$title = 'Мои сообщения';}
Возможно как то заменить функцию if-else, или упростить код? Замена на switch не подходит из-за разных переменных (изменено)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Код неправильный. Кавычек в обьявлении ключей массивов нет, куча переприсваиваний. Тут не о том надо думать, как красивее написать, а о том, как писать вообще правильно.

Переменная называется абы как, $data_post, а внутри что, GET!
 

Nabari

Новичок
С кавычками и названием ошибка понятна, спасибо (исправил). А вот с GET! немного непонятна, если возможно объясни или скинь ссылку де объясняется.
 

Фанат

oncle terrible
Команда форума
c0dex
Синтаксис РНР не требует кавычек для ключей массивов.
 

Фанат

oncle terrible
Команда форума
Я сильно подозреваю, что при error_reporting(E_ALL); самый первый код с присваиваниями будет постоянно выдавать ошибки.
И предлагаю сначала разобраться с ними.
 

Nabari

Новичок
Про поиск ошибок error_reporting(E_ALL); не знал (опыт работы с php 2 недели)
Да выдает ошибки как в массиве так и в присваивании, буду исправлять.
Хотя все равно интересно услышать почему GET! нельзя использовать внутри массива. Если из-за того что он тут не фильтруется, тогда понятно.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Фанат
и где тут предопределенная константа?
 

Фанат

oncle terrible
Команда форума
Nabari
Можно "использовать GET внутри массива."
просто массив у тебя называется "post", а внутри - get. кого ты хочешь запутать?

шибки как в массиве так и в присваивании, буду исправлять.
вот после того, как исправишь, проблема с ифами отпадет сама собой
(подсказка: проще всего будет установить action для всех действий, а не определять его по наличию тех или иных переменных)
и вообще я бы $title определял не на входе, а в том модуле, который выводит страницу.
 

Фанат

oncle terrible
Команда форума
c0dex
а где там строка или число? :)

чуваки, фраза "массив требует кавычки" определённо неверная.
особенно учитывая толпы нубов, которые её так буквально и воспринимают: кавычки вокруг ключа - это синтаксис массива!
поэтому надо быть тщательнее в формулировках.
и писать, что строка (которая в данном случае является ключом массива), в пхп должна заключаться в кавычки.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Фанат
$key - не строка, не число? А что тогда? Я не писал, что массив "требует кавычки", ты что-то попутал.
 

Фанат

oncle terrible
Команда форума
Фанат
$key - не строка, не число? А что тогда?
мне кажется, что это переменная
Я не писал, что массив "требует кавычки"
Фраза "Код неправильный. Кавычек в обьявлении ключей массивов нет"? продазумевает, что ключи массивов должны писаться с кавычками.
Хотя на самом деле, в кавычках пишутся строки, что, в общем случае, к массивам вообще отношения не имеет.
Четче надо быть в формулировках. И не спорить с очевидными вещами.
 

Фанат

oncle terrible
Команда форума
Beavis
Разговор шёл не об исполнении кода, а о его синтаксисе.
А с точки зрения синтаксиса в качестве ключа массива можно указать практически любой оператор РНР.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Фанат
ничерта это не подразумевает))) Если ты понял не правильно, то не значит, что ошибся я. Очевидными для кого?

Я имел в виду только то, что у него при использовании строки вида $array[aaa] как ключа массива, без значка доллара впереди ней или кавычек вокруг, то есть $aaa / 'aaa' - будет ошибка, так как интерпретатор ее сочтет константой.
 

Nabari

Новичок
Название массива дал как раз абы как, да и на безопасность оно вроде не влияет.
action не могу использовать, поскольку модуль в зависимости от адреса должен определять <title></title> страницы
 

Фанат

oncle terrible
Команда форума
Для читателя. Он не знает, что ты подразумеваешь только строки, когда пишешь о ключах массива.
 

Фанат

oncle terrible
Команда форума
Nabari
короче забей.
никакого волшебного синтаксиса, чтобы ПХП телепатически догадался, что ты имел в виду, для твоего случая не существует.
проблема решается более осмысленной архитектурой, но это тебе, с 2 неделями, будет и неинтересно и непонятно. а, главное, потребует написать в 100 раз больше кода, чем эти несчастные 6 ифов.
 

Nabari

Новичок
ну извиняйте что потревожил, хотя и помогли частично
А насчет "неинтересно" это пожалуй буду решать я
 
Сверху