ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 09.01.2009, 01:33
w.u.n.
Познающий
Регистрация: 13.12.2008
Сообщений: 54
С нами: 9162484

Репутация: 80
По умолчанию

Цитата:
Сообщение от Pashkela  
а вот так " {$kak[16]}" точно нельзя, неправильно, и небезопасно
это почему же?
 
Ответить с цитированием

  #12  
Старый 09.01.2009, 01:41
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

ну это, некрасиво как-то, щаз еще погуглю, так не помню
 
Ответить с цитированием

  #13  
Старый 09.01.2009, 01:46
nerezus
Флудер
Регистрация: 12.08.2004
Сообщений: 3,793
С нами: 11444066

Репутация: 2290


По умолчанию

Цитата:
а вот так " {$kak[16]}" точно нельзя, неправильно, и небезопасно
Это один из двух одобренных в ZendFramework сбособов вставлять переменные в " строки.
 
Ответить с цитированием

  #14  
Старый 09.01.2009, 01:59
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
С нами: 9702986

Репутация: 479
По умолчанию

Цитата:
Сообщение от Pashkela  
ну это, некрасиво как-то, щаз еще погуглю, так не помню
наоборот красиво. ИМХО красивее
echo "ололо {$omg} привет" чем без скобок.

еще случай
тебе надо вывести строку "я-хакир"
$xak = "хак";
в лучшем виде будет echo "я-{$xak}ир";

а вообще форматный вывод решает

Последний раз редактировалось ntldr; 09.01.2009 в 02:03..
 
Ответить с цитированием

  #15  
Старый 09.01.2009, 02:07
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

Цитата:
тебе надо вывести строку "я-хакир"
$xak = "хак";
в лучшем виде будет echo "я-{$xak}ир";
Я бы так сделал:

тебе надо вывести строку "я-хакир"
PHP код:
$xak = 'хак';
echo 
"я-$xakир"; 
 
Ответить с цитированием

  #16  
Старый 09.01.2009, 02:30
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
С нами: 9702986

Репутация: 479
По умолчанию

Цитата:
Сообщение от Pashkela  
Я бы так сделал:

тебе надо вывести строку "я-хакир"
PHP код:
$xak = 'хак';
echo 
"я-$xakир"; 
да я не очень хороший пример привел. но читаемость моего варианта в разы лучше
 
Ответить с цитированием

  #17  
Старый 09.01.2009, 14:13
d_x
Постоянный
Регистрация: 25.03.2008
Сообщений: 670
С нами: 9541766

Репутация: 2407


По умолчанию

Вариант с {} позволяет вставлять не только переменные, но и любые массивы или переменные из классов.
PHP код:
echo "абвг {$var[1]['str']} {$xxx->blabla['qwerty']}"; 
Это очень удобно для вывода переменных с использованием heredoc-синтаксиса.
 
Ответить с цитированием

  #18  
Старый 09.01.2009, 15:18
oRb
Members of Antichat - Level 5
Регистрация: 09.05.2008
Сообщений: 304
С нами: 9477026

Репутация: 2362
По умолчанию

Можно все, вот только
PHP код:
echo ' => '.$array."\n"; 
И читабельно, и работает быстрее, чем вариации типа:
PHP код:
echo " => {$array}\n"; 
 
Ответить с цитированием

  #19  
Старый 09.01.2009, 15:30
oRb
Members of Antichat - Level 5
Регистрация: 09.05.2008
Сообщений: 304
С нами: 9477026

Репутация: 2362
По умолчанию

Сделал скриптик для примера:
PHP код:
<?php
function getmicrotime() 
{ 
    list(
$usec, $sec) = explode(" ", microtime()); 
    return ((float)
$usec + (float)$sec); 
} 
define(N, 1000000);
for(
$i=0; $i<N; $i++)
    
getmicrotime();
    
$str = "";
$array['a'] = 'efg';
$start = getmicrotime();
for(
$i=0; $i<N; $i++)
    
$str = 'abcd '.$array['a'].' hij';
echo 
getmicrotime() - $start, "\n";

$str = "";
$array['a'] = 'efg';
$start = getmicrotime();
for(
$i=0; $i<N; $i++)
    
$str = "abcd ".$array["a"]." hij";
echo 
getmicrotime() - $start, "\n";

$str = "";
$array['a'] = 'efg';
$start = getmicrotime();
for(
$i=0; $i<N; $i++)
    
$str = "abcd {$array['a']} hij";
echo 
getmicrotime() - $start, "\n";

$str = "";
$array['a'] = 'efg';
$start = getmicrotime();
for(
$i=0; $i<N; $i++)
    
$str = <<<HD
    abcd {$array['a']} hij
HD;
echo 
getmicrotime() - $start, "\n";

$str = "";
$array['a'] = 'efg';
$start = getmicrotime();
for(
$i=0; $i<N; $i++)
    
$str = <<<HD
    abcd $array[a] hij
HD;
echo 
getmicrotime() - $start, "\n";

?>
Результаты:
Цитата:
0.789710998535
0.792525053024
1.04027700424
1.01121997833
1.00872707367
 
Ответить с цитированием

  #20  
Старый 09.01.2009, 16:51
SMiX
Участник форума
Регистрация: 25.07.2005
Сообщений: 246
С нами: 10944326

Репутация: 174
По умолчанию

Глупо так делать выводы. Как минимум, нужно произвести этот тест на нескольких машинах и не 1 раз. Также стоит выделить расчёт каждого варианта в отдельный скрипт.
На моём сервере к примеру 2 вариант в 2 раза "быстрее" первого.
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.