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

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

php中數(shù)組的右旋轉

php中數(shù)組的右旋轉

PHP
四季花海 2023-09-08 14:23:59
例如我有一個數(shù)組$a = [1,2,3,4,5];由此$a,如何獲取最后一個數(shù)組并將其設置為第一個[5,1,2,3,4] ,以及如何獲取最后兩個數(shù)組以使其像[4,5,1,2,3]
查看完整描述

4 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

您可以組合使用array_pop(),這會彈出數(shù)組的最后一個元素,并將array_unshift()其推到數(shù)組的前面。您可以為此創(chuàng)建一個簡單的函數(shù),


function array_pop_unshift($array) {

    array_unshift($array, array_pop($array));

    return $array;

}

然后將其用作


$a = [1,2,3,4,5];

$new = array_pop_unshift($a);

print_r($new); // [5,1,2,3,4]

要繼續(xù)移動它,只需再次調用該函數(shù)直到完成,例如通過循環(huán)for,


$a = [1,2,3,4,5];

for ($i = 0; $i < 2; $i++) {

    $new = array_pop_unshift($a);

}

print_r($new); // [4,5,1,2,3]


查看完整回答
反對 回復 2023-09-08
?
楊魅力

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

array_unshift如果您想避免多個and的成本array_pop,您可以構建一個使用數(shù)組內部指針的生成器。如果您確實需要結果數(shù)組,請使用以下方法iterator_to_array()創(chuàng)建它:


$a = range(1,5);


function rotate(&$array, $step = 1) {

    $length = count($array);

    

    end($array);

    

    while ($step--)

        prev($array);

    

    while ($length--) {

        next($array);

        if (key($array) === null)

            reset($array);

            

        yield current($array);

    }

}


print_r(iterator_to_array(rotate($a, 2))); // [4,5,1,2,3]

演示

請注意,rotate()生成器使用引用來避免數(shù)組復制,但不會修改原始數(shù)組:它僅將數(shù)組指針從所選位置移動 n 次(其中 n 是數(shù)組長度)。當數(shù)組指針超出數(shù)組時(key()返回null),數(shù)組指針將被重置。換句話說,即使有一個大數(shù)組和多次旋轉(我在代碼中稱之為“步驟”),它仍然保持高效。



查看完整回答
反對 回復 2023-09-08
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

不要迭代調用array_pop()array_unshift(),而是使用一種高效、優(yōu)雅的方法來減少函數(shù)調用并具有盡可能低的時間復雜度。使用提前返回可以防止對相同結果進行不必要的函數(shù)調用。

代碼:(演示

function popUnshift(array $indexedArray, int $popShiftsCount): array

{

    $count = count($indexedArray);

    if ($count < 2) {

        return $indexedArray; // array cannot be rotated

    }

    $remainder = $popShiftsCount % $count;

    if (!$remainder) {

        return $indexedArray; // sought rotation is the original order

    }

    return array_merge(

        array_splice($indexedArray, -$remainder),

        $indexedArray

    );

}

披露:這個答案是建立在 CodeReview 頁面(PHP 中的 Codility 循環(huán)輪換解決方案)上的,我在評論中提供了這個片段。



查看完整回答
反對 回復 2023-09-08
?
慕碼人8056858

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

您實際上是在進行右旋轉,而不是左旋轉。無論如何,這里有執(zhí)行這兩個操作的函數(shù)。它們可能不是最有效的,但它們的代碼很短并且非常不言自明:


<?php

    function rotateLeft($array, $times) {

        for($i=0; $i<$times; $i++){

            $array[] = array_shift($array);

        }

        return $array;

    }

    

    function rotateRight($array, $times) {

        for($i=0; $i<$times; $i++){

            array_unshift($array, array_pop($array));

        }

        return $array;

    }

    

    $a = [1,2,3,4,5]; 

    $a = rotateRight($a, 1);

    print_r($a);

?>


查看完整回答
反對 回復 2023-09-08
  • 4 回答
  • 0 關注
  • 179 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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