Analisis mendalam tentang pengendali '? :' dalam PHP dan penggunaannya!

青灯夜游
Lepaskan: 2023-04-10 17:16:02
ke hadapan
16442 orang telah melayarinya

Artikel ini akan memberi anda analisis mendalam tentang operator "? :" (ungkapan ternari) dalam PHP untuk melihat fungsinya, cara menggunakannya dan apakah kesannya? Semoga ia membantu semua orang!

Analisis mendalam tentang pengendali '? :' dalam PHP dan penggunaannya!

Apakah rupa pengendali ? dan : dalam PHP?

adalah seperti berikut:

(($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER)
Salin selepas log masuk

Ia ialah pengendali bersyarat.

$x ? $y : $z
Salin selepas log masuk

bermaksud "Jika $x benar, maka gunakan $y; jika tidak, gunakan $z".

Ia juga boleh dipermudahkan.

$x ?: $z
Salin selepas log masuk

bermaksud "Jika $x benar, maka gunakan $x; jika tidak, gunakan $z".

Ada yang mungkin berkata ?: ialah "pengendali ternari". Ini tidak betul. ?: Jika ia adalah pengendali ternary, maka ia sepatutnya mempunyai tiga operan. Sebabnya ialah ia secara amnya satu-satunya pengendali ternary dalam bahasa semasa.

Berikut akan memperkenalkan apa itu ternary, cara menggunakannya, bila hendak menggunakannya, mengapa menggunakannya, dan bila tidak menggunakannya.

Apakah pengendali ternary?

? : ialah singkatan daripada if dan else. Terdapat penerangan rasmi "pengendali ternary" di tengah.

Sejak PHP 5.3:

Setakat PHP 5.3, bahagian tengah pengendali ternary boleh diabaikan. Ungkapan expr1 ?: expr3 mengembalikan expr1 jika expr1 adalah BENAR dan expr3 sebaliknya.

Sejak PHP 7.0

PHP 7 mempunyai pengendali penggabungan Null baharu. Ini adalah sama dengan pengendali ternary, juga dikenali sebagai "operator ternary isset". Ini mengalih keluar isset() daripada aritmetik ternary berantai.

Dalam PHP 5, jika anda menggunakan operator ternary pada pembolehubah yang mungkin tidak wujud, anda mesti menggunakan isset() pada permulaan pernyataan ternary:

$result = isset($nonExistentVariable) ? $nonExistentVariable : ‘default’;
Salin selepas log masuk

Dalam PHP 7, anda boleh melakukan ini:

$result = $nonExistentVariable ?? ‘default’;
Salin selepas log masuk

Ingat bahawa pengendali penyatuan Null tidak boleh mengendalikan rentetan kosong. Anda boleh menggunakannya dalam rantaian untuk menyemak berbilang pembolehubah:

$user = $userImpersonatingAnotherUser ?? $loggedInUser ?? “Guest”;
Salin selepas log masuk

Dalam PHP, adalah perkara biasa bagi pentadbir untuk berpura-pura menjadi pengguna untuk menguji dalam sistem yang boleh dilog masuk. Seperti di atas, jika pengguna tidak menyamar sebagai pengguna lain dan tidak log masuk, dia akan menjadi tetamu. Jika anda masih tidak faham, teruskan membaca untuk mengetahui apakah operator ternary dan cara menggunakannya Kemudian lihat kembali dan lihat cara menggunakan operator ternary dalam PHP baharu

. simbol?

Normal if pernyataan adalah seperti berikut:

if (isset($_POST['hello']))
{
    $var = 'exists';
}
else
{
    $var = 'error';
}
Salin selepas log masuk

Gunakan operator ternary untuk memudahkan.

$var = isset($_POST['hello']) ? 'exists' : 'error';
                 ^            ^     ^    ^     |
                 |           then   |   else   |
                 |                  |          |
          if post isset         $var=this   $var=this
Salin selepas log masuk

Lebih pendek, tetapi lebih sukar untuk difahami. Ini boleh digunakan bukan sahaja pada pembolehubah $var seperti di atas, tetapi juga pada echo seperti di bawah untuk menyemak sama ada pembolehubah itu palsu:

$isWinner = false;

// 输出 'you lose'
echo ($isWinner) ? 'You win!' : 'You lose';

// 同上
return ($isWinner) ? 'You win!' : 'You lose';
Salin selepas log masuk

Mengapa?

Saya dapati aritmetik ternary menarik. Sesetengah pembangun mahukan prestasi, tetapi pengendali ternary bagus, terutamanya apabila digabungkan dengan ciri lain, seperti gema pendek terbaharu dalam PHP 5.4.

<?php 
    $array = array(0 => &#39;orange&#39;, 1 => &#39;multicoloured&#39;); 
?>

<p>
    <?php foreach ($array as $key => $value) { ?>
        <span><?=($value===&#39;multicoloured&#39;)?&#39;nonsense&#39;:&#39;pointless&#39;?></span>
    <?php } ?>
</p>

<!-- Outputs:
    <span>
        pointless
    </span>
    <span>
        nonsense
    </span> 
-->
Salin selepas log masuk

Sedikit di luar topik, dalam 'view/template' (perhatikan contoh MVC), jika anda ingin menggunakan beberapa logik sisi pelayan, menggunakan operator ternary atau ayat pendek lain akan menjadi cara terbaik. "Ayat pendek lain", seperti berikut:

if ($isWinner) :
    // Show something cool
endif;
Salin selepas log masuk

Perhatian, saya secara peribadi tidak suka ayat pendek yang tidak bermakna itu.

Berapa pantaskah operator ternary?

Orang ramai suka pengoptimuman mikro. Ini juga dilakukan. Oleh itu, adalah penting untuk mengetahui sejauh mana operasi ternary lebih pantas daripada kenyataan if / else biasa.

Daripada artikel itu, saya mengetahui bahawa ia adalah kira-kira 0.5ms lebih pantas. Ini sudah jauh lebih pantas!

Tunggu, bukan begitu. Kesimpulan ini datang daripada berulang kali melakukan beribu-ribu operasi pada satu baris kod. Jadi jangan risau sama sekali, ia tidak berguna.

Pengendali ternary bukan praktikal

Kod tersebut hendaklah:

  • Mudah dibaca
  • Mudah difahami
  • Mudah diubah suai

Jelas sekali, ini bergantung pada keupayaan pengekodan orang yang melihat kod dan keupayaan untuk memahami masalah sedemikian. Tidak ada masalah dengan contoh mudah sebelum ini, tetapi yang berikut adalah tidak bagus:

echo ($colour === &#39;red&#39;) ? "Omg we&#39;re going to die" :
     ($colour === &#39;blue&#39; ? "Ah sunshine and daisies" :
     ($colour === &#39;green&#39; ? "Trees are green"
     : "The bloody colour is orange, isn&#39;t it? That was pointless."));
Salin selepas log masuk

Sebabnya seperti berikut:

  • Ternary bersarang terlalu panjang
  • Anda boleh menggunakan switch pernyataan
  • Yang pertama mestilah oren

Ringkasan

Aritmetik ternary sebenarnya sangat mudah, jadi tidak perlu takut. Jangan fikir ada sebarang peningkatan kelajuan, memang tiada perbezaan. Gunakan apabila anda boleh membuat keputusan mudah, kelihatan bagus dan sentiasa pastikan kod boleh dibaca. Jangan gunakan operator ternary tanpa ternary.

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Analisis mendalam tentang pengendali '? :' dalam PHP dan penggunaannya!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!