ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   PHP (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   ОПРОС мнений по поводу ковычек (https://forum.antichat.xyz/showthread.php?t=100202)

w.u.n. 09.01.2009 01:33

Цитата:

Сообщение от Pashkela
а вот так " {$kak[16]}" точно нельзя, неправильно, и небезопасно

это почему же?

Pashkela 09.01.2009 01:41

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

nerezus 09.01.2009 01:46

Цитата:

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

ntldr 09.01.2009 01:59

Цитата:

Сообщение от Pashkela
ну это, некрасиво как-то, щаз еще погуглю, так не помню

наоборот красиво. ИМХО красивее
echo "ололо {$omg} привет" чем без скобок.

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

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

Pashkela 09.01.2009 02:07

Цитата:

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

тебе надо вывести строку "я-хакир"
PHP код:

$xak 'хак';
echo 
"я-$xakир"


ntldr 09.01.2009 02:30

Цитата:

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

тебе надо вывести строку "я-хакир"
PHP код:

$xak 'хак';
echo 
"я-$xakир"


да я не очень хороший пример привел. но читаемость моего варианта в разы лучше

d_x 09.01.2009 14:13

Вариант с {} позволяет вставлять не только переменные, но и любые массивы или переменные из классов.
PHP код:

echo "абвг {$var[1]['str']} {$xxx->blabla['qwerty']}"

Это очень удобно для вывода переменных с использованием heredoc-синтаксиса.

oRb 09.01.2009 15:18

Можно все, вот только
PHP код:

echo ' => '.$array."\n"

И читабельно, и работает быстрее, чем вариации типа:
PHP код:

echo " => {$array}\n"


oRb 09.01.2009 15:30

Сделал скриптик для примера:
PHP код:

<?php
function getmicrotime() 

    list(
$usec$sec) = explode(" "microtime()); 
    return ((float)
$usec + (float)$sec); 

define(N1000000);
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

SMiX 09.01.2009 16:51

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


Время: 01:19