[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кавычки в название массива
Baxmanchik
Привет, ранее я все названия массива заключал в одинарные кавычки, либо двойные.

$array=array(
'1' => 'Город',
"2" => "Город");

Но вот теперь я кавычки не ставлю. И хочу спросить нужно ли заключать в кавычки простые тексты.
Я как понимаю - кавычки нужны только в том случае если в значение находятся символы типа "запятой", либо кавычек в тексте, и мне нужно тем самым сначала заключить текст в кавычки чтоб дать понять php что это просто текст

$array=array(
'1' => ', \' Город');

Но если в тексте нет таких символов как кавычки либо запятых их можно и не заключать в кавычки, верно? Как будет правильней?

$array=array(
1 => Город);
volter9
Baxmanchik
Кавычки нужны там где тебе нужно строковое значение. Если у тебя простой лист (массив с числовыми индексами начиная с 0), то можно даже индексы не писать:
$cities = array(
'Город',
'Город 2'
);

Цитата (Baxmanchik @ 19.03.2015 - 05:59)
Как будет правильней?

Правильнее будет всегда строки держать в апострофах (одинарные кавычки) или в кавычках, а числа в числах (т.е. без кавычек). Если не знаешь разницу между " и ' и их особенности, советую почитать мануал, глава про строки: http://php.net/manual/ru/language.types.string.php

_____________
Мой блог
Миша
Для любого текста (string) - используй '
Для цифр (типа int-integer) кавычки не нужны.


Может интересно, допускаются следующие приведения типов:

(int), (integer) - приведение к integer
(bool), (boolean) - приведение к boolean
(float), (double), (real) - приведение к float
(string) - приведение к string
(array) - приведение к array
(object) - приведение к object
(unset) - приведение к NULL (PHP 5)

_____________
Принимаю заказы, писать в ЛС
Baxmanchik
Спасибо, а если слово одно слитное, например "num_red" нужно ли использовать кавычки?
Понимаете я просто переписываю некоторый код, который писал год назад.
И сейчас все кавычки удалил где название значение идет в одном слове.
Массивы с кавычками были разные - например вывод строки из базы данных

$tt1=mysql_query("SELECT * FROM `tema` WHERE `id`=1");
$tt=mysql_fetch_array($tt1)){
//Ранее было с кавычками{
$text=$tt['text'];
//}

//Сейчас без{

$text=$tt[text];
//}

Может быть я зря удаляю кавычки - просто мне кажется что без кавычек (если слово одно в котором только буквы, цифры либо _) быстрее обрабатывается код - хотя наверное я не прав.
volter9
Baxmanchik
Цитата (Baxmanchik @ 20.03.2015 - 04:46)
хотя наверное я не прав

Вы не правы.
Текст без кавычек вызовет ошибку парсинга PHP кода. Для доступа к ключям массивов, нужно всегда использовать кавычки (за исключения когда массив не ассоциативный, а индексный, там можно использовать кавычки, но лучше использовать цифры).
Цитата (Baxmanchik @ 20.03.2015 - 04:46)
$text=$tt[text];

У Вас вообще это работает?

_____________
Мой блог
Baxmanchik
Цитата (volter9 @ 20.03.2015 - 04:55)
Текст без кавычек вызовет ошибку парсинга PHP кода.

Это в какой он версии php вызывает такую ошибку - в 1990 которая появилась?smile.gif
Baxmanchik
Цитата (volter9 @ 20.03.2015 - 04:55)
У Вас вообще это работает?

Конечно работает, зачем же мне создавать тему отвлекая Вас и себя на пустую болтавню.
Он даже так работает:


$arr=array(
1 => text,
2 => tema,
3 => info);

$num=mt_rand(1,3);

$tt1=mysql_query("SELECT * FROM `tema` WHERE `id`=1");
$tt=mysql_fetch_array($tt1);
$text=$tt[$arr[$num]];
echo $text;
Invis1ble
Цитата (Baxmanchik @ 20.03.2015 - 18:26)
Это в какой он версии php вызывает такую ошибку - в 1990 которая появилась?

в актуальной

Цитата (Baxmanchik @ 20.03.2015 - 18:35)
Конечно работает

а теперь добавь в начало скрипта
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 'On');


Цитата (volter9 @ 20.03.2015 - 03:55)
У Вас вообще это работает?

всему виной лояльность php к говнокоду

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Arh
Baxmanchik
Цитата
просто мне кажется что без кавычек быстрее обрабатывается код

Если слово без кавычек, то PHP сначала думает что это константа, ищет её, не находит и грубо говоря сам ставит кавычки.
Так что обрабатывается медленней, потому что куча лишних действий.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Baxmanchik
Цитата (Arh @ 20.03.2015 - 20:33)
Baxmanchik
Цитата
просто мне кажется что без кавычек быстрее обрабатывается код

Если слово без кавычек, то PHP сначала думает что это константа, ищет её, не находит и грубо говоря сам ставит кавычки.
Так что обрабатывается медленней, потому что куча лишних действий.

Вот это уже аргумент, спасибо!
Baxmanchik
Еще один вопрос, конечно работает и так и так, но вот интересно стало - есть ли какое то различие в регистре операторов OR и AND

//Верхний регистр{
if(isset($a) AND $a==5){
}

//}


//Нижний регистр{

if(isset($a) and $a==5){
}

//}


а так же при запросе в базу данных, регистр оператора имеет какое то различие между собой?

//Верхний регистр{
"SELECT * FROM `tema` WHERE `id`=1 AND (`m`=321 OR `m`=555)"
//}


//Нижний регистр{

"SELECT * FROM `tema` WHERE `id`=1 and (`m`=321 or `m`=555)"
//}
Arh
Они регистронезависимы, но в условиях лучше использовать такие опертаторы

# И
if($a && $b){

}


# ИЛИ
if($a || $b){

}


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Baxmanchik
Цитата (Arh @ 21.03.2015 - 01:14)
Они регистронезависимы, но в условиях лучше использовать такие опертаторы

# И
if($a && $b){

}


# ИЛИ
if($a || $b){

}

Чем они лучше?
volter9
Baxmanchik
У них приоритет ниже (AND и OR) чем у && и ||:
http://php.net/manual/ru/language.operators.precedence.php
По этому есть вероятность выстрелить себе в ногу получить неверный результат.

Пример:
$a = true;
$b = false;

// Тоже самое что и: ($c = $a) and $b;
$c = $a and $b; // $c теперь true

// Тоже самое что и: $c = ($a && $b);

$c = $a && $b; // $c теперь false


_____________
Мой блог
Arh
Baxmanchik
Во первых приоритетом как написал volter9, ну а во вторых большинство разработчиков привыкло так писать, соответственно когда ты будешь читать чужой код, будет не привычно, как и другим читать твой.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.