CascadiaPHP 2024

print

(PHP 4, PHP 5, PHP 7, PHP 8)

printBir dizge çıktılar

Açıklama

print(string $ifade): int

ifadeyi çıktılar.

print aslında bir işlev değildir (bir dil oluşumudur), dolayısıyla bağımsız değişkenini belirtirken yaylı ayraçları kullanmanız gerekmez.

echo'dan başlıca farklar, print'in tek bir bağımsız değişken kabul etmesi ve daima 1 döndürmesidir.

Bağımsız Değişkenler

ifade

Çıktılanacak ifade. Dizge olmayan değerler strict_types yönergesi etkin olsa bile dizgeye zorlanır.

Dönen Değerler

Daima 1 döner.

Hatalar/İstisnalar

PHP 8.0.0 ve sonrasında, bağımsız değişken sayısı sıfırsa ValueError oluşuyor. PHP 8.0.0 öncesinde bunun yerine bir E_WARNING uyarısı verilirdi.

PHP 8.0.0 ve sonrasında, [width] (genişlik) sıfırdan küçükse veya PHP_INT_MAX'tan büyükse bir ValueError oluşuyor. PHP 8.0.0 öncesinde, bir E_WARNING uyarısı verilirdi.

PHP 8.0.0 ve sonrasında, [precision] (hassasiyet) sıfırdan küçükse veya PHP_INT_MAX'tan büyükse bir ValueError oluşuyor. PHP 8.0.0 öncesinde, bir E_WARNING uyarısı verilirdi.

PHP 8.0.0 ve sonrasında, gereğinden daha az bağımsız değişken verildiğinde bir ArgumentCountError oluşuyor. PHP 8.0.0 öncesinde, bir E_WARNING uyarısı verilirdi.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 Bu işlev başarısızlık durumunda artık false döndürmüyor.
8.0.0 Bağımsız değişken sayısı sıfırsa ValueError oluşuyor. Evvelce bunun yerine bir E_WARNING uyarısı verilirdi.
8.0.0 [width] (genişlik) sıfırdan küçükse veya PHP_INT_MAX'tan büyükse bir ValueError oluşuyor; evvelce bir E_WARNING uyarısı verilirdi.
8.0.0 [precision] (hassasiyet) sıfırdan küçükse veya PHP_INT_MAX'tan büyükse bir ValueError oluşuyor; evvelce bir E_WARNING uyarısı verilirdi.
8.0.0 Gereğinden daha az bağımsız değişken verildiğinde bir ArgumentCountError oluşuyor; evvelce bir E_WARNING uyarısı verilirdi.

Örnekler

Örnek 1 - print örnekleri

<?php
print "print yaylı ayraçlar olmadan da çalışır.";

// Satırsonu veya boşluk eklemek gerekmez;
// aşağıdaki tek satırda "helloworld" çıktılar.
+print "hello";
+print
"world";

print
"Bu çok satırlı bir
dizge olup satırsonu karakterleri
de çıktılanır."
;

print
"Bu çok satırlı bir\ndizge olup satırsonu karakterleri\nde çıktılanır.";

print
"Karakterlerin öncelenmesi böyle yapılır: \"Tıpkı böyle\".";

// Bağımsız değişken dizge üreten harhangi bir ifade olabilir
$bu = "Bu da";
print
"$bu Buda"; // Bu da Buda

// Ayrıca dizileri de kullanabilirsiniz
$bar = array("değer" => "Buda");

print
"Bu da {$bar['değer']} !"; // Bu da Buda !

// declare(strict_types=1) olsa bile dizge olmayan iadeler dizgeye zorlanır
print 6 * 7; // 42

// Tek tırnak içine alırsanız değişken basılır, değeri değil
print '$bu Buda'; // $bu Buda

// Başka karakter kullanmazsanız sadece değişkenin değeri basılır
print $bu; // Bu da

// print değer döndürdüğünden ifadelerde kullanılabilir
// Çıktısı: "hello world"
if ( print "hello" ) {
echo
" world";
}

// Çıktısı: "true"
( 1 === 1 ) ? print 'true' : print 'false';
?>

Notlar

Bilginize: Yaylı ayraçların kullanımı

print deyiminin bağımsız değişkenini yaylı ayraçlar arasına almak bir sözdizimi hatasına yol açmaz ve normal bir işlev çağrısı gibi görünen bir sözdizimi de üretmez. Ancak bu yanlış anlaşılabilir, çünkü yaylı ayraçlar aslında çıktılanacak ifadenin parçasıdır, print deyimim parçası değildir.

<?php
print "hello";
// "hello" basar

print("hello");
// bu da "hello" basar, çünkü ("hello") geçerli bir ifadedir

print(1 + 2) * 3;
// "9" basar; yaylı ayraçlar sayesinde 1+2 önce yorumlanır, sonra da 3*3
// print deyimi ifadenin tümünü tek bir bağımsız değişken olarak görür

if ( print("hello") && false ) {
print
" - inside if";
}
else {
print
" - inside else";
}
// " - inside if" basar
// ("hello") && false ifadesi önce yorumlanır ve false ile sonuçlanır
// bu boş dizgeye zorlanır "" ve çıktılanır
// print deyimi 1 döndürür, böylece if bloğundaki kod çalıştırılır
?>

print büyük bir ifade ile kullanılırken, anahtar sözcüğü ve bağımsız değişkenini yaylı ayraçlar arasına almak istenen sonucu üretmek için gerekli olabilir:

<?php
if ( (print "hello") && false ) {
print
" - inside if";
}
else {
print
" - inside else";
}
// "hello - inside else" basar
// önceki örneğin tersine (print "hello") ifadesi önce yorumlanır
// "hello" bastıktan sonra 1 döndürür
// 1 && false ifadesinin sonucu false olduğundan else bloğundaki kod çalıştırılır

print "hello " && print "world";
// "world1" basar; önce print "world" yorumanır,
// sonra soldaki print'e "hello " && 1 aktarılır

(print "hello ") && (print "world");
// "hello world" basar; ayraçlar print ifadelerinin
// &&'den önce yorumlanmasını sağlar
?>

Bilginize: Bu bir işlev değil, dil oluşumu olduğundan değişken işlevler veya isimli bağımsız değişkenler kullanılarak çağrılamaz.

Ayrıca Bakınız

add a note

User Contributed Notes 3 notes

up
31
user at example dot net
15 years ago
Be careful when using print. Since print is a language construct and not a function, the parentheses around the argument is not required.
In fact, using parentheses can cause confusion with the syntax of a function and SHOULD be omited.

Most would expect the following behavior:
<?php
if (print("foo") && print("bar")) {
// "foo" and "bar" had been printed
}
?>

But since the parenthesis around the argument are not required, they are interpretet as part of the argument.
This means that the argument of the first print is

("foo") && print("bar")

and the argument of the second print is just

("bar")

For the expected behavior of the first example, you need to write:
<?php
if ((print "foo") && (print "bar")) {
// "foo" and "bar" had been printed
}
?>
up
3
mark at manngo dot net
9 months ago
The other major difference with echo is that print returns a value, even it’s always 1.

That might not look like much, but you can use print in another expression. Here are some examples:

<?php
rand
(0,1) ? print 'Hello' : print 'goodbye';
print
PHP_EOL;
print
'Hello ' and print 'goodbye';
print
PHP_EOL;
rand(0,1) or print 'whatever';
?>

Here’s a more serious example:

<?php
function test() {
return !!
rand(0,1);
}
test() or print 'failed';
?>
up
13
danielxmorris @ gmail dotcom
16 years ago
I wrote a println function that determines whether a \n or a <br /> should be appended to the line depending on whether it's being executed in a shell or a browser window. People have probably thought of this before but I thought I'd post it anyway - it may help a couple of people.

<?php
function println ($string_message) {
$_SERVER['SERVER_PROTOCOL'] ? print "$string_message<br />" : print "$string_message\n";
}
?>

Examples:

Running in a browser:

<?php println ("Hello, world!"); ?>
Output: Hello, world!<br />

Running in a shell:

<?php println ("Hello, world!"); ?>
Output: Hello, world!\n
To Top