2012-01-19 35 views
5

Nếu tôi bên trong một tấn mã PHP, thay vì ra khỏi PHP Tôi thường viết mã, trong đó có các biến như sau:Cách nào để viết mã này là hiệu quả nhất?

echo "This is how I use a ".$variable." inside a string"; 

nhưng nó hiệu quả hơn để thực sự thoát ra khỏi PHP như sau:

?> 

Should I instead use the <? echo $variable; ?> like this 

<? // then back into PHP 

Trong suốt một trang sẽ có nhiều trường hợp mã như thế này khi tôi lấp đầy các trang có nội dung động hoặc quá nhiều khái quát?

+7

Bạn sẽ không bao giờ nhận thấy sự khác biệt về hiệu suất giữa hai, nó quá nhỏ để thực tế không thể đo được .... nếu bạn cần tối ưu hóa, cấu hình tập lệnh của bạn và xem truy vấn SQL và truy cập tệp .... chúng lớn hơn nhiều chi phí –

+0

hiệu suất của các biến 'echo' một hoặc cách khác là hầu như không giống nhau. –

+1

Nếu tôi cần phải viết chỉ một dòng mã tôi sử dụng echo, nhưng khi đó là một số dòng html tôi nhận được ra khỏi php. Nhưng nó sẽ là thú vị để biết nếu có một sự khác biệt hiệu suất giữa hai người. – romainberger

Trả lời

5

Tôi chỉ đề xuất ngắt thẻ php khi lặp lại HTML, không chỉ là một chuỗi.

Điều này là tốt cho chỉ là một chuỗi:

// You don't need to concat, double quotes interpolate variables 
echo "This is how I use a $variable inside a string"; 

Nhưng với HTML, cá nhân, tôi muốn làm điều này:

<?php //... ?> 
<div> 
    <span>This is how I use a <?=$variable?> inside HTML</span> 
</div> 
<?php //... ?> 
0

echo 'This is how I use a'.$variable.' inside a string'; có lẽ là hiệu quả nhất ở đây ..

Trong trường hợp đầu tiên của bạn, bạn đang sử dụng ", khiến toàn bộ chuỗi được đánh giá cho các biến nội tuyến.

Trong trường hợp thứ hai của bạn, tôi tưởng tượng rằng công tắc ngữ cảnh có thể tốn kém hơn một chút đối với thông dịch viên so với mẫu của tôi.

Có nói rằng, bạn đang xem xét sự khác biệt không đáng kể theo một trong hai cách.

+0

Không nhất thiết là hiệu quả nhất, khi bạn đang ghép nối ... chỉ cần truyền một chuỗi các đối số không được lập trình cho tiếng vang được phân cách bằng dấu phẩy sẽ là hiệu quả hơn từng phần –

+0

@MarkBaker: Vâng, nó hiệu quả hơn với một số đối số , nhưng hiệu quả hơn để nối với một biến duy nhất. Trường hợp thương mại-off nằm chính xác tôi không chắc chắn. –

0

Có chỉ cần sử dụng <?php ..... ?> giữa phi PHP (HTML) của bạn bất cứ nơi nào bạn cần. Bạn thậm chí có thể có một thời gian, cho các vòng bên trong chúng.

0

Một cách khác là sử dụng printf() như sau:

// your variable 
$my_variable = "Stack Overflow"; 

printf("Real programmers graduate on %s", $my_variable); 

// this prints 'Real programmers graduate on Stack Overflow, 

Plus có thêm tiền thưởng không cần phải nối thường xuyên. Tuy nhiên, có thể đáng để tìm hiểu cách hoạt động của nó so với câu lệnh echo

1

Sử dụng tiếng vọng dường như nhanh hơn một chút. Tôi đã thực hiện tập lệnh chuẩn đơn giản này:

<?php 
$variable = "hello world"; 
$num = 10000; 
$start1 = microtime(true); 
for ($i = 0; $i<$num;$i++) {  
    echo "test " . $variable . " test\n";  
} 
$time1 = microtime(true) - $start1; 
$start2 = microtime(true); 
for ($i = 0; $i<$num;$i++) { 
    ?>test <?php echo $variable;?> test 
<? 
} 
$time2 = microtime(true) - $start2; 
echo "\n$time1\n$time2\n"; 

Vòng lặp echo luôn ổn định nhanh hơn khoảng 25%.

Trong thực tế sự khác biệt này quá nhỏ, nó sẽ không có bất kỳ tác động nào đến hiệu suất tổng thể trừ khi bạn thực sự đang làm hàng triệu báo cáo đầu ra như vậy. Tôi vẫn khuyên bạn nên sử dụng echo chỉ vì nó đơn giản và dễ đọc hơn.

0

Trong hầu hết các trường hợp, bạn không nên sử dụng các thẻ ngắn cho php. Trong mọi trường hợp, nếu bạn đang ở trong dấu ngoặc kép, bạn thậm chí không phải sử dụng các dấu chấm concat để xuất ra một biến.Bạn chỉ có thể làm điều này:

echo "This is how I use a $variable inside a string"; 

hay này:

echo "This is how I use a {$variable} inside a string"; 

Ví dụ thứ hai cho phép biểu thức (phần tử mảng và tài sản đối tượng) được giới hạn bởi các dấu ngoặc nhọn. Bạn có thể sử dụng chúng trong ví dụ đầu tiên, nhưng sự tham lam của phân tích cú pháp biến đôi khi gây ra vấn đề. Sử dụng dấu ngoặc nhọn dừng lại.

Các vấn đề liên quan