有一个数组,例如:
$arr = [1,3,4,7,11,21,27,31,79];
现在新插入一个元素,如$n = 23;插入后使数组仍然保持之前的顺序,如何实现?要求,不能使用php内置函数,如使用sort。
有一个数组,例如:
$arr = [1,3,4,7,11,21,27,31,79];
现在新插入一个元素,如$n = 23;插入后使数组仍然保持之前的顺序,如何实现?要求,不能使用php内置函数,如使用sort。
题主表述很模糊,“插入后使数组仍然保持之前的顺序”就当是从大到小的排序吧
$arr = [1,3,4,7,11,21,27,31,79];
$insertArr= [];
$insertValue = 23;
foreach ($arr as $value){
if($value > $insertValue){
$insertArr[] = $insertValue;
}
$insertArr[] = $value;
}
$arr == $insertArr && $insertArr[] = $insertValue;
随手一个冒泡
$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.']';
}
1 回答3k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.7k 阅读
不明白不能使用内置函数什么意思,如果以下不能用count之类的,数组索引默认是0123,再循环出数组长度吧