php 数组 将指定元素移至末尾
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 数组 将指定元素移至末尾相关的知识,希望对你有一定的参考价值。
比如有一数组:
0,3,5,0,0,7,1,9,0,8
我需要将全部0元素移到数组末尾,不改变其他元素顺序,即变成:
3,4,7,1,9,8,0,0,0,0
php如何实现?
Copy code
$arr = array(0, 3, 5, 0, 0, 7, 1, 9, 0, 8);
foreach ($arr as $key => $val)
if ($val === 0)
array_push($arr, 0);
array_splice($arr, $key, 1);
print_r($arr);
在本示例中,通过 foreach 循环遍历数组 $arr,并通过 if 语句检查每个元素是否为 0。如果 $val 元素为 0,则使用 array_push() 函数将一个 0 添加到数组的末尾,再使用 array_splice() 函数移除这个 0 的原始元素。
最后,使用 print_r() 函数打印数组 $arr 的新值。运行上述代码,输出为:
Copy code
Array
(
[0] => 3
[1] => 5
[2] => 7
[3] => 1
[4] => 9
[5] => 8
[6] => 0
[7] => 0
[8] => 0
[9] => 0
)
可以看到,输出结果数组正确地将原始数组中的所有 0 移动到了末尾,并保持了所有其他元素的相对位置不变。 参考技术A $arr = array(0,3,5,0,0,7,1,9,0,8);
$count = count($arr);
$remove_arr = array();
for($i=0;$i<=$count;$i++)
if($arr[$i] === 0)
array_push($arr, $arr[$i]);
array_push($remove_arr, $i);
foreach($arr as $k=> $v)
if(in_array($k, $remove_arr))
unset($arr[$k]);
echo '<pre>';
var_dump($arr);die;本回答被提问者采纳 参考技术B function moveZeroEnd($arr)
if (empty($arr)) return false;
for ($i = 0; $i < count($arr) ; $i++)
if ($arr[$i] == 0)
array_push($arr, $arr[$i]);//把为0的值追加到末尾
unset($arr[$i]);
return $arr;
$arr = [0,3,5,0,0,7,1,9,0,8];
echo "<pre>";
print_r(moveZeroEnd($arr));
echo "</pre>";
结果如下所示:
Array
(
[1] => 3
[2] => 5
[5] => 7
[6] => 1
[7] => 9
[9] => 8
[10] => 0
[11] => 0
[12] => 0
[13] => 0
) 参考技术C
可以使用 array_shift 和 array_push 两个函数来实现将指定元素移至末尾的操作。
php
<?php
$arr = array('a', 'b', 'c', 'd');
$element = 'c';
$key = array_search($element, $arr);
if ($key !== false)
array_splice($arr, $key, 1);
array_push($arr, $element);
print_r($arr);
?>
输出结果:Array( [0] => a [1] => b [2] => d [3] => c)这个例子中,我们首先找到数组中要移动的元素的索引位置,然后使用 array_splice 函数将其从数组中移除,最后使用 array_push 函数将其添加到数组末尾。注意,如果要移动的元素不在数组中,array_search 函数返回 false。
以上是关于php 数组 将指定元素移至末尾的主要内容,如果未能解决你的问题,请参考以下文章