php常见数据结构和算法
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-06-18 09:05:33
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
php实现foreach遍历结构
class Test implements Iterator
{
private $item = array('id' => 1, 'name' => 'php');
/**
* 将索引指定到首个元素
* {@inheritDoc}
* @see Iterator::rewind()
*/
public function rewind()
{
reset($this->item);
}
/**
* 返回当前元素
* {@inheritDoc}
* @see Iterator::current()
*/
public function current()
{
return current($this->item);
}
/**
* 返回当前元素键值
* {@inheritDoc}
* @see Iterator::key()
*/
public function key()
{
return key($this->item);
}
/**
* 索引指向下一个元素
* {@inheritDoc}
* @see Iterator::next()
*/
public function next()
{
return next($this->item);
}
/**
* 判断下个是否有下个元素
* {@inheritDoc}
* @see Iterator::valid()
*/
public function valid()
{
return ($this->current() !== false);
}
}
//测试
$t = new Test;
foreach ($t as $k => $v) {
echo $k, '--->', $v, "\n";
}冒泡排序算法

/**
* 冒泡排序升序
* @param [type] &$arr 数组
* @param boolean $desc 默认升序
* @return [type]
*/
function bubble_sort(&$arr, $desc = false)
{
for ($i = 0, $len = count($arr); $i < $len; $i++) {
for ($j = 1; $j < $len - $i; $j++) {
if ($desc) {
if ($arr[$j - 1] < $arr[$j]) {
$temp = $arr[$j - 1];
$arr[$j - 1] = $arr[$j];
$arr[$j] = $temp;
}
} else {
if ($arr[$j - 1] > $arr[$j]) {
$temp = $arr[$j - 1];
$arr[$j - 1] = $arr[$j];
$arr[$j] = $temp;
}
}
}
}
}
// 测试
$arr = array(10, 2, 36, 14, 10, 25, 23, 85, 99, 45);
bubble_sort($arr, true);
print_r($arr);