php有序数组插入一个元素后是数组仍然保持之前的顺序

有一个数组,例如:

$arr = [1,3,4,7,11,21,27,31,79];

现在新插入一个元素,如$n = 23;插入后使数组仍然保持之前的顺序,如何实现?要求,不能使用php内置函数,如使用sort。

慕田峪9158850
浏览 857回答 3
3回答

斯蒂芬大帝

不明白不能使用内置函数什么意思,如果以下不能用count之类的,数组索引默认是0123,再循环出数组长度吧 $arr = [1,3,4,7,11,21,27,31,79]; $n = 2; $j = 0; $arr1 = []; $lenth = count($arr); for($i=0; $i < $lenth; $i++) { if($i==0 && $n <= $arr[$i]){ $arr1[$j] = $n; $j++; $arr1[$j] = $arr[$i]; }elseif($arr[$i] < $n && ($n <= $arr[$i+1] || !$arr[$i+1])){ $arr1[$j] = $arr[$i]; $j++; $arr1[$j] = $n; }else{ $arr1[$j] = $arr[$i]; } $j++; } print_r($arr1);

阿波罗的战车

随手一个冒泡 $arr = [1,3,4,7,11,21,27,31,79]; $n = 23; _sort($arr,$n); echo _print_r($arr); //不使用内置函数 function _sort(&$arr,$n) { for($i = _count($arr); $i >= 0; $i--) { if(_isset($arr,$i - 1) and $arr[$i - 1] >= $n) { $arr[$i] = $arr[$i - 1]; } else { $arr[$i] = $n; break; } } } function _isset($arr,$k) { foreach($arr as $key => $value) if($key == $k) return TRUE; return FALSE; } function _count($arr) { $count = 0; foreach($arr as $value) $count++; return $count; } function _print_r($arr) { $count = _count($arr); $echo = ''; foreach($arr as $key => $value) $echo .= $value.($key != $count - 1 ? ',' : ''); return '['.$echo.']'; }
打开App,查看更多内容
随时随地看视频慕课网APP