亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

從 PHP 7.3 開始,只能使用一個參數來調用 array_unshift() 。重點是什么?

從 PHP 7.3 開始,只能使用一個參數來調用 array_unshift() 。重點是什么?

PHP
侃侃無極 2023-07-21 18:21:35
正如PHP 手冊中關于array_unshift()函數所說:7.3.0 現在可以僅使用一個參數來調用該函數。以前,至少需要兩個參數。我沒明白。如何使用只有一個參數的函數?我試圖猜測,但什么也沒發生:$arr = ['one' => 'test', 'two' => 'some'];array_unshift($arr);print_r($arr);// Result:// Array// (//? ? [one] => test//? ? [two] => some// )$arr1 = ['what', 'ever'];array_unshift($arr1);print_r($arr1);// Array// (//? ? [0] => what//? ? [1] => ever// )數組沒有改變。有誰知道 PHP 貢獻者的具體建議是什么?
查看完整描述

2 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

我認為我的評論可能需要更多解釋,希望這能讓它更清楚。


如果我有兩個數組,并且我想添加從第二個數組到第一個數組末尾的所有元素,array_push與解包運算符結合使用可以讓我這樣做:


$a = [1, 2, 3];

$b = [4, 5, 6];


array_push($a, ...$b);

$a就是現在[1, 2, 3, 4, 5, 6]


(array_unshift讓我做同樣的事情,但將元素添加到數組的開頭。使用array_push我認為使示例更清晰)


在 PHP 7.3 之前,如果$b為空,則會引發警告,因為解包空數組相當于僅傳遞第一個參數。請參閱此處的演示: https: //3v4l.org/GZQoo。$a仍然不會改變,這是期望的結果,所以它只是日志中不必要的噪音。


在實際示例中,如果$b是由另一個函數(調用數據庫等)生成的,那么如果沒有此更改,我需要if (!empty($b) ...在運行代碼之前調用以防止出現警告?,F在,它默默地工作。


注意:還有其他方法可以將一個數組附加到另一個數組(array_merge、array_replace和+運算符),但它們都有特定的合并和刪除重復共享密鑰的方法。此方法只是將第二個值的所有值附加到第一個值,而不管鍵是什么。


查看完整回答
反對 回復 2023-07-21
?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

這只是一個猜測,但當函數返回時:


返回數組中新的元素數。


您可以使用它作為count替代方案:


$arr1 = ['what', 'ever'];

print_r(array_unshift($arr1));? ? // 2

但當然這并不明顯。


作為手動的另一個副作用:


所有數字數組鍵將被修改為從零開始計數


因此,它是以下內容的部分替代array_values:


$arr1 = [4 => 'what', 5 => 'ever'];

array_unshift($arr1);

print_r($arr1);? // [[0] => what [1] => ever]

而且也不是很明顯。


也許其他答案會更好地解釋這種行為。


array_push()現在也可以array_unshift()用單個參數調用,這特別方便。擴展運算符。


所以,你可以使用類似的東西:


$arr1 = [['what'], ['ever']];

array_unshift(...$arr1);

print_r($arr1);

但這個方法的行為很奇怪o_O:


Array

(

? ? [0] => Array

? ? ? ? (

? ? ? ? ? ? [0] => Array

? ? ? ? ? ? ? ? (

? ? ? ? ? ? ? ? ? ? [0] => ever

? ? ? ? ? ? ? ? )


? ? ? ? ? ? [1] => what

? ? ? ? )


? ? [1] => Array

? ? ? ? (

? ? ? ? ? ? [0] => ever

? ? ? ? )


)


查看完整回答
反對 回復 2023-07-21
  • 2 回答
  • 0 關注
  • 141 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號