很多站长朋友们都不太清楚php数组算法题,今天小编就来给大家整理php数组算法题,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 几个PHP算法题 2、 PHP数组计算 如下数组$arr,求方法随机对数组的值相加,求和为指定值:如(690),输出:405+180+105=690 3、 php求最大连续出现次数的算法,见问题详细 4、 php数组问题 几个PHP算法题比如:冒泡排序,插入排序,选择排序,合并多个数组,杨辉三角这些都涉及到算法!
PHP数组计算 如下数组$arr,求方法随机对数组的值相加,求和为指定值:如(690),输出:405+180+105=690<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
/**
* 根据某个值对数组中的元素进行分组
*/
function getGroupBySum($arr, $sum) {
$len = count($arr);
$result = [];
// for 1
for($i = 0; $i < $len; $i++) {
// for 2
for($j = 1; $j < $len - $i; $j++) {
$tmp = array_slice($arr, $i+1, $j);
array_unshift($tmp, $arr[$i]);
if(array_sum($tmp) == $sum) {
$result[] = $tmp;
}
}
//for 3
for($k = $i + 1; $k < $len; $k++) {
if(($arr[$i] + $arr[$k]) == $sum) {
$result[] = [$arr[$i], $arr[$k]];
}
}
}
return $result;
}
print_r(getGroupBySum($arr, 10));
打印结果:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
[1] => Array
(
[0] => 1
[1] => 9
)
[2] => Array
(
[0] => 2
[1] => 8
)
[3] => Array
(
[0] => 3
[1] => 7
)
[4] => Array
(
[0] => 4
[1] => 6
)
)
函数getGroupBySum的算法解释:
我只能解释到这里了,剩下的只可意会。
---------------------------2017/2/16/19:45--------------
下班回去的途中,仔细思考了一下,我上面的函数还没有找到 1、2、7与1、3、6等等,所以它是错的。
我对题目的理解是:数组中任意个元素的和等于某个值,把这些元素组合找出来。
如果没有理解错题意的话,我写不出来这种算法,组合太多了。
php求最大连续出现次数的算法,见问题详细<?php
//Code by jhk
function get_array_repeats(array $array,$string) {
/*
函数说明:计算$string在$array(需为数组)中重复出现的次数.
*/
$count = array_count_values($array);
foreach ($count as $key => $value) {
if ($key = $string) {
return $value;
}
}
}
?>
php数组问题全部看一遍就知道了
array_change_key_case —
返回字符串键名全为小写或大写的数组
array_chunk — 将一个数组分割成多个
array_combine —
创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
array_count_values —
统计数组中所有的值出现的次数
array_diff_assoc —
带索引检查计算数组的差集
array_diff_key —
使用键名比较计算数组的差集
array_diff_uassoc —
用用户提供的回调函数做索引检查来计算数组的差集
array_diff_ukey —
用回调函数对键名比较计算数组的差集
array_diff — 计算数组的差集
array_fill_keys —
使用指定的键和值填充数组
array_fill — 用给定的值填充数组
array_filter — 用回调函数过滤数组中的单元
array_flip — 交换数组中的键和值
array_intersect_assoc —
带索引检查计算数组的交集
array_intersect_key —
使用键名比较计算数组的交集
array_intersect_uassoc —
带索引检查计算数组的交集,用回调函数比较索引
array_intersect_ukey —
用回调函数比较键名来计算数组的交集
array_intersect — 计算数组的交集
array_key_exists —
检查给定的键名或索引是否存在于数组中
array_keys — 返回数组中所有的键名
array_map — 将回调函数作用到给定数组的单元上
array_merge_recursive —
递归地合并一个或多个数组
array_merge — 合并一个或多个数组
array_multisort —
对多个数组或多维数组进行排序
array_pad — 用值将数组填补到指定长度
array_pop — 将数组最后一个单元弹出(出栈)
array_product — 计算数组中所有值的乘积
array_push — 将一个或多个单元压入数组的末尾(入栈)
array_rand — 从数组中随机取出一个或多个单元
array_reduce —
用回调函数迭代地将数组简化为单一的值
array_replace_recursive
— 使用传递的数组递归替换第一个数组的元素
array_replace —
使用传递的数组替换第一个数组的元素
array_reverse — 返回一个单元顺序相反的数组
array_search —
在数组中搜索给定的值,如果成功则返回相应的键名
array_shift — 将数组开头的单元移出数组
array_slice — 从数组中取出一段
array_splice —
把数组中的一部分去掉并用其它值取代
array_sum — 计算数组中所有值的和
array_udiff_assoc —
带索引检查计算数组的差集,用回调函数比较数据
array_udiff_uassoc —
带索引检查计算数组的差集,用回调函数比较数据和索引
array_udiff — 用回调函数比较数据来计算数组的差集
array_uintersect_assoc —
带索引检查计算数组的交集,用回调函数比较数据
array_uintersect_uassoc
— 带索引检查计算数组的交集,用回调函数比较数据和索引
array_uintersect —
计算数组的交集,用回调函数比较数据
array_unique — 移除数组中重复的值
array_unshift —
在数组开头插入一个或多个单元
array_values — 返回数组中所有的值
array_walk_recursive —
对数组中的每个成员递归地应用用户函数
array_walk — 对数组中的每个成员应用用户函数
array — 新建一个数组
arsort — 对数组进行逆向排序并保持索引关系
asort — 对数组进行排序并保持索引关系
compact — 建立一个数组,包括变量名和它们的值
count — 计算数组中的单元数目或对象中的属性个数
current — 返回数组中的当前单元
each — 返回数组中当前的键/值对并将数组指针向前移动一步
end — 将数组的内部指针指向最后一个单元
extract — 从数组中将变量导入到当前的符号表
in_array — 检查数组中是否存在某个值
key — 从关联数组中取得键名
krsort — 对数组按照键名逆向排序
ksort — 对数组按照键名排序
list — 把数组中的值赋给一些变量
natcasesort —
用“自然排序”算法对数组进行不区分大小写字母的排序
natsort — 用“自然排序”算法对数组排序
next — 将数组中的内部指针向前移动一位
pos — current 的别名
prev — 将数组的内部指针倒回一位
range — 建立一个包含指定范围单元的数组
reset — 将数组的内部指针指向第一个单元
rsort — 对数组逆向排序
shuffle — 将数组打乱
sizeof — count 的别名
sort — 对数组排序
uasort —
使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
uksort — 使用用户自定义的比较函数对数组中的键名进行排序
usort —
使用用户自定义的比较函数对数组中的值进行排序
关于php数组算法题的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php数组算法题 php数组数据结构的详细内容...