PHP面试算法

<?php

//冒泡排序
function bubbleSort($arr){

	$count=count($arr);

	for ($i=0; $i < $count; $i++) { 
		
		for ($j=0; $j < $count-$i-1; $j++) { 
			
			if ($arr[$j]>$arr[$j+1]) {
				$temp=$arr[$j];
				$arr[$j]=$arr[$j+1];
				$arr[$j+1]=$temp;
			}
		}
	}

	return $arr;
}
$arr=array(20,40,60,80,30,70,90,10,50,0);
print_r(bubbleSort($arr));
//快速排序function quickSort(&$arr){$count=count($arr);if($count>1){$k=$arr[0];$x=array();$y=array();for ($i=1; $i < $count; $i++) { if($arr[$i]<=$k){$x[]=$arr[$i];}elseif($arr[$i]>$k){$y[]=$arr[$i];}}$x=quickSort($x);$y=quickSort($y);return array_merge($x,array($k),$y);}else{return $arr;}}
$arr=array(20,40,60,80,30,70,90,10,50,0);
print_r(bubbleSort($arr));
//顺序排序function orderSort($arr){$count=count($arr);for ($i=0; $i < $count-1; $i++) { $p=$i;for ($j=$i+1; $j < $count; $j++) { $p=$arr[$p]>$arr[$j]?$j:$p;}if($p!=$i){$temp=$arr[$i];$arr[$i]=$arr[$p];$arr[$p]=$temp;}}return $arr;}$arr=array(20,40,60,80,30,70,90,10,50,0);print_r(orderSort($arr));

//对二维数组进行排序
/*function array_sort_by_any_row($array_name, $row_id, $order_type){

	$array_temp=array();
	foreach ($array_name as $key => $value) {
		$array_temp[$key]=$value[$row_id];
	}

	if($order_type==="ASC"){
		//顺序
		asort($array_temp);
	}else{
		//倒序
		arsort($array_temp);
	}

	$result_array=array();
	foreach ($array_temp as $key => $value) {
		$result_array[$key]=$array_name[$key];
	}
	return $result_array;
}

$arr = array(

array(‘num’=>5, ‘value’=>6),
array(‘num’=>2, ‘value’=>39),
array(‘num’=>36, ‘value’=>29)
);

$sortarr = array_sort_by_any_row($arr, ‘num’, ‘DESC’);
print_r($sortarr);*/


//第二种方法  对任意列进行排序
/*function array_sort($arr,$order){

	if(is_array($arr) && is_array($order)){

		foreach($order as $key=>$val){

			if($val == 'desc'){

				foreach ($arr as $value) {
					
					$arr1[][$key] = $value[$key];

				}
				arsort($arr1);
			}else{

				foreach ($arr as $value) {
					
					$arr2[][$key] = $value[$key];

				}
				asort($arr2);

			}
		}

		return array($arr1,$arr2);

	}else{

		return false;
	}

}


$arr = [

	['age'=>'1','id'=>1],
	['age'=>'2','id'=>3],
	['age'=>'3','id'=>2],
	['age'=>'5','id'=>7]
];


$order = [
	'age'=>'asc',
	'id'=>'desc'
];

$res = array_sort($arr,$order);
echo "<pre>";
print_r($res);
echo "</pre>";*/

//

写5个不同的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数

$path = str_replace('\\', '/',__FILE__); echo $path.'<br />';
function extname1($path) {
return strrchr($path, ‘.’);
}

function extname2($path) {
$position = strrpos($path, ‘.’);
return substr($path, $position);
}

function extname3($path) {
$arr = explode(‘.’, $path);
return $arr[count($arr) – 1];
}

function extname4($path) {
preg_match_all(‘/[\w\/\:\-]+\.([\w]+)$/’, $path, $out);
return $out[1][0];
}

function extname5($path) {
return preg_replace(‘/^[^\.]+\.([\w]+)$/’, ‘${1}’, basename($path));
}
print_r(extname5($path));




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值