繁体   English   中英

PHP:如何替换数组中的最后一个 X 元素

[英]PHP: How to replace last X elements in array

我有一个数组如下

$myArr = array("red", "green", "blue", "yellow");

并想用单词HIDDEN替换它的最后一个X (其元素的数量)

例如,如果我想替换最后 2 个元素,那么

foreach ($myArr as $color){
echo $color . '<br />';
}

应该是这样的

red
green
HIDDEN
HIDDEN

我在考虑function和三个 arguments

function hide_elm($array, $howmany = 0, $hide_msg = 'HIDDEN'){
}

但不能处理数组这样做。

这是另一种选择。

function hide_elm($array, $howMany = 0, $hide_msg = 'HIDDEN')
{
    // remove elements
    $array = array_slice($array, 0, -$howMany);
    // add them back
    for ($i = 0; $i < $howMany; $i++) {
        $array[] = $hide_msg;
    }
    return $array;
}

那这个呢

function hide_elm($array, $howmany = 0, $hide_msg = 'HIDDEN'){
$start=sizeof($array)-$howmany;
for($i=$start;$i<sizeof($array);$i++){
$array[$i]=$hide_msg;
}
return $array;
}
function hide_elm($array, $howMany = 0, $hide_msg = 'HIDDEN'){
    $elementCounter = 0;
    for ($i=0; $i < $howMany; $i++) { 
        $array[count($array) - $elementCounter - 1] = $hide_msg;
        $elementCounter ++;
    }

    return $array;
}

例子

$myArr = array("red", "green", "blue", "yellow");
print_r(hide_elm($myArr, 3));


function hide_elm($array, $howMany = 0, $hide_msg = 'HIDDEN'){
    $elementCounter = 0;
    for ($i=0; $i < $howMany; $i++) { 
        $array[count($array) - $elementCounter - 1] = $hide_msg;
        $elementCounter ++;
    }

    return $array;
}

结果

Array
(
    [0] => red
    [1] => HIDDEN
    [2] => HIDDEN
    [3] => HIDDEN
)

您可以反向遍历数组并更改值,直到达到指定的$howmany

function hide_elm($array, $howmany = 0, $hide_msg = 'HIDDEN'){
     $len = count($array);
     if($howmany < 0 || $howmany > $len) return $array;
     $result = array_merge(array(), $array);
     $count = 0;
     for($i = $len-1; $count != $howmany; $i--) {
          $result[$i] = $hide_msg;
          $count++;
     }
     return $result;
}

$myArr = array("red", "green", "blue", "yellow");
print_r( hide_elm($myArr, 2, 'HIDDEN') );
echo "<br>";
print_r( hide_elm($myArr, 3, 'HIDDEN') );
echo "<br>";
print_r( hide_elm($myArr, 4, 'HIDDEN') );
echo "<br>";
print_r( hide_elm($myArr, -1, 'HIDDEN') );
echo "<br>";
print_r( hide_elm($myArr, 5, 'HIDDEN') );

Output:

Array ( [0] => red [1] => green [2] => HIDDEN [3] => HIDDEN )
Array ( [0] => red [1] => HIDDEN [2] => HIDDEN [3] => HIDDEN )
Array ( [0] => HIDDEN [1] => HIDDEN [2] => HIDDEN [3] => HIDDEN )
Array ( [0] => red [1] => green [2] => blue [3] => yellow )
Array ( [0] => red [1] => green [2] => blue [3] => yellow )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM