第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

PHP 宇宙飛船運(yùn)算符 <=> 到底如何作用于字符串?

PHP 宇宙飛船運(yùn)算符 <=> 到底如何作用于字符串?

PHP
湖上湖 2023-10-15 15:04:41
我對字符串上的宇宙飛船運(yùn)算符的功能有點(diǎn)困惑。在文檔中,他們說比較是根據(jù) PHP 通常的類型比較規(guī)則進(jìn)行的,但我還不清楚!我看了這個(gè)stackoverflow 問題并做了一些測試,但仍然很困惑。這是我測試的代碼:<?php$str1 = "aaa";$str2 = "aaaa";echo $str1 <=> $str2, PHP_EOL; // -1$str1 = "baaaaaa";$str2 = "abbb";echo $str1 <=> $str2, PHP_EOL; // 1$str1 = "aaaaaaa";$str2 = "bbbb";echo $str1 <=> $str2, PHP_EOL; // -1它如何使用 ASCII 值?謝謝你的幫助。
查看完整描述

4 回答

?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

比較兩個(gè)表達(dá)式。

對于字符串,它使用 ASCII 值。

當(dāng)?shù)谝粋€(gè)表達(dá)式分別小于、等于或大于第二個(gè)表達(dá)式時(shí),它返回 -1、0 或 1。

// Integers

echo 1 <=> 1; // 0

echo 1 <=> 2; // -1

echo 2 <=> 1; // 1

 

// Floats

echo 1.5 <=> 1.5; // 0

echo 1.5 <=> 2.5; // -1

echo 2.5 <=> 1.5; // 1

 

// Strings

echo "a" <=> "a"; // 0

echo "a" <=> "b"; // -1

echo "b" <=> "a"; // 1

 

echo "a" <=> "aa"; // -1

echo "zz" <=> "aa"; // 1

 

// Arrays

echo [] <=> []; // 0

echo [1, 2, 3] <=> [1, 2, 3]; // 0

echo [1, 2, 3] <=> []; // 1

echo [1, 2, 3] <=> [1, 2, 1]; // 1

echo [1, 2, 3] <=> [1, 2, 4]; // -1

 

// Objects

$a = (object) ["a" => "b"]; 

$b = (object) ["a" => "b"]; 

echo $a <=> $b; // 0

 

$a = (object) ["a" => "b"]; 

$b = (object) ["a" => "c"]; 

echo $a <=> $b; // -1

 

$a = (object) ["a" => "c"]; 

$b = (object) ["a" => "b"]; 

echo $a <=> $b; // 1

 

// not only values are compared; keys must match

$a = (object) ["a" => "b"]; 

$b = (object) ["b" => "b"]; 

echo $a <=> $b; // 1


查看完整回答
反對 回復(fù) 2023-10-15
?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

我閱讀了所有答案,但這對我來說還不夠,因?yàn)閷ξ襾碚f主題是PHP 如何在內(nèi)部做事。于是我搜索了又搜索,結(jié)果發(fā)現(xiàn) PHP 使用運(yùn)算符 <=> 對字符串進(jìn)行逐個(gè)字符的比較,當(dāng)只有一個(gè)不同的字符時(shí),它會停止,并且使用 ASCII 代碼,如下所示:


<?php


$str1 = "aaaaaaa";

$str2 = "bbbb";


echo $str1 <=> $str2, PHP_EOL; // -1


print_r(unpack("C*", $str1));

print_r(unpack("C*", $str2));



// output

 Array

(

    [1] => 97

    [2] => 97

    [3] => 97

    [4] => 97

    [5] => 97

    [6] => 97

    [7] => 97

)

Array

(

    [1] => 98

    [2] => 98

    [3] => 98

    [4] => 98

)

這就解釋了為什么$str1 <=> $str2 === -1。


查看完整回答
反對 回復(fù) 2023-10-15
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

字符串比較基于每個(gè)字母的 ASCII 代碼和字母順序。


所有以小寫字母開頭的字符串都會比以大寫字母開頭的字符串大(因?yàn)樵?ASCII 中,大寫字母用 65 到 90 的數(shù)字表示,而小寫字母的代碼是 97 到 122)


比較是逐個(gè)字母進(jìn)行的,一旦相同位置的兩個(gè)字母不同就停止比較。


結(jié)合字母順序,例如:


// "a" comes before "aa" so:

 "a" < "aa"

// and

"a" <=> "aa" === -1


// "b" comes after "B" so:

"b" > "B"

// and

"b" <=> "B" === 1


"Aa" === "Aa"

// and

"Aa" <=> "Aa" === 0


// Because uppercase < lowercase

// "Abb" comes before "abb"

"Abb" < "abb"

"Abb" <=> "abb" === -1


// Because uppercase < lowercase

"Abb" < "a"

"Abb" <=> "a" === -1


// Because uppercase < lowercase

"Bbb" < "a"

"Bbb" <=> "a" === -1


//

"Cbb" > "Baa"

"Cbb" <=> "Baa" === 1


查看完整回答
反對 回復(fù) 2023-10-15
?
千萬里不及你

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊

當(dāng)你在字符串上使用時(shí),它會從左到右,比較給定字符串中的每個(gè)字符以找到第一個(gè)差異,然后它會比較剛剛找到的不同字符的 ASCII 值。所以:


"aaa" < "aaaa" // because 4th char: '' < 'a'

"baaaaaa" > "abbb" // because 1st char 'b' > 'a'

"aaaaaaa" < "bbbb" // because 1st char 'a' < 'b'

而且,它是一個(gè)簡單的字符串宇宙飛船運(yùn)算符


$str1 <=> $str2 will return :

1 if $str1 > $str2

-1 if $str1 < $str2

0 if $str1 = $str2


查看完整回答
反對 回復(fù) 2023-10-15
  • 4 回答
  • 0 關(guān)注
  • 182 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號