使用 PHP 实现冒泡排序,将数组 $a=array() 安装从小到大的方式进行排序

在要排序的一数组中,对当前还未排序好的范围内的全部数,自前向后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的数往上冒。

即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将他们互换。

<?php
$arr = [1,43,6,7,3,5,78];
function bubbleSort ($arr) {
    $num = count($arr);
    $temp;
    for ($i=0; $i<$num-1; $i++){
        for ($j=0; $j<$num-1-$i; $j++){
            if ($arr[$j] > $arr[$j+1]){
                $temp = $arr[$j];
                $arr[$j] = $arr[$j+1];
                $arr[$j+1] = $temp;
            }
        }
    }
    return $arr;
}
print_r (bubbleSort($arr));

 

使用 PHP 秒速快速排序算法

基本思想:选择一个基准元素,通常选择第一个元素,通过一趟扫描,将待排序列分为两个部分,一部分比基准元素小(做数组),一部分大于等于基准元素组(右数组),此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。

可以看到,这种方法是把大问题转变为小问题的方法,使用递归实现。

image

<?php
//递归函数的特点有两个
//1.要有递归出口,应该放到递归函数的最前面
//2.要有递归调用
function quick sort ($arr) {
    //递归出口判断要放在最前面
    if (count($arr) <= 1){
        return $arr;
    }
    //把第一个元素从数组中弹出去放在一个变量中
    $key = array_shift($arr);
    //把刚才弹出的第一个元素(基准元素)存到一个数组中
    $key_arr = array($key);
    //定义两个空数组,给左边和右边的数组进行初始化。
    $left_arr = array();
    $right_arr = array();
    foreach ($arr as $value){
        if($value < $key){
            $left_arr[] = $value;
        }else{
            $right_arr[] = $value;
        }
    }
    //这里就是递归调用
    return array_merge(quick_sort($left_arr), $key_arr, quick_sort($right_arr));
}

 

优化 MySQL 数据库的方法

1. 选取最实用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如“省份,性别”,最好设置为ENUM

2. 使用连接(JOIN)来代替子查询

3. 使用联合(UNION)来代替手动创建临时表

4. 事务处理

5. 锁表,优化事务处理

6. 使用外键,优化锁定表

7. 建立索引

8. 优化查询语句

PHP值传递和引用传递的区别

值传递是将变量的值复制一份,改变一个变量的值而不影响另一个变量的值。

引用传递是将变量的引用关系复制一份,改变一个变量的值另一个变量的值也会随之改变。

值传递:

形式:

[php]
$v1 = 1;
$v2 = $v1;
[/php]

含义:将变量$v1的值复制一份,然后赋值给$v2,$v1和$v2具有两相同的值,但$v1和$v2是相互独立的,互相没有关系的两个变量。

image

引用传递:

形式:

[php]
$v1 = 1;
$v2 = &$v1;
[/php]

含义:将变量$v1跟其数据之间的关系,复制一份,然后将关系应用到$v2上。此时,$v1和$v2都有了一个共同的特性:指向同一数据(区)。改变一个变量的值都会影响另一个变量的值。

image

WordPress 更换域名

进入后台 phpMyAdmin 执行 SQL 语句

UPDATE wp_options SET option_value = replace( option_value, 'http://xinghaizhongxin.com', 'http://xinghaizhongxin.guofeng.io' ) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace( post_content, 'http://xinghaizhongxin.com', 'http://xinghaizhongxin.guofeng.io' ) ;
UPDATE wp_posts SET guid = replace( guid, 'http://xinghaizhongxin.com', 'http://xinghaizhongxin.guofeng.io' ) ;

或进入主题 function.php 添加

update_option('siteurl','http://xinghaizhongxin.guofeng.io');
update_option('home','http://xinghaizhongxin.guofeng.io');

然后进入后台设置-常规, 修改域名

PHP判断上传文件是否为图片且保存为唯一命名

[php]
<?php
header("content-type:text/html;charset=utf-8");
$arr_ext = array("jpg","png","gif");
$index = strrpos($_FILES[‘upload’][‘name’],".");
$ext = substr($_FILES[‘upload’][‘name’],$index+1);
if(!in_array($ext,$arr_ext))
{
echo "上传的文件不是图像";
exit();
}else
{
$src = $_FILES[‘upload’][‘tmp_name’];
$dst = "./upload/".uniqid().".$ext";
move_uploaded_file($src,$dst);
echo "上传文件成功";
}
?>
[/php]

[html]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>判断上传文件是否为图片,为保存为唯一命名</title>
</head>
<body>
<form name="form1" method="post" enctype="multipart/form-data" action="upload2.php">
上传图片:<input type="file" name="upload">
<input type="submit" value="提交表单">
</form>
</body>
</html>
[/html]

 

PHP上传单个文件并保存至服务器

[php]
<?php
header("content-type:text/html;charset=utf-8");
if($_FILES[‘upload’][‘error’]!=0)
{
echo "上传文件发生错误";
exit();
}
if($_FILES[‘upload’][‘size’]>2*1024*1024)
{
echo "上传文件大小超出要求";
exit();
}
$src = $_FILES[‘upload’][‘tmp_name’];
$dst = "./upload/".$_FILES[‘upload’][‘name’];
if(!move_uploaded_file($src,$dst))
{
echo "上传文件移动保存失败";
exit();
}
echo "上传文件成功";
?>
[/php]

[html]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form name="form1" method="post" enctype="multipart/form-data" action="upload.php">
上传图片:<input type="file" name="upload">
<input type="submit" value="提交表单">
</form>
</body>
</html>
[/html]

PHP随机字母数字验证码

[php]
<?php
header("content-type:text/html;charset=utf-8");
//变量初始化
$str = "";
$filename = "./images/captcha.png";
$font = 5;
//生成随机验证码字符串
//array_merge合并一个或多个数组
$arr_list = array_merge(range(‘A’,’Z’),range(0,9));
//array_rand从数组中随机取出一个或多个单元
$index_list = array_rand($arr_list,8); //随机取8个下标
shuffle($index_list); //打乱数组
foreach($index_list as $value)
{
$str .= $arr_list[$value];
}
//创建画布
$img = imagecreatefrompng($filename);
//分配颜色,随机字体颜色
$color = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
//获取画布和字体尺寸
$imgWidth = imagesx($img);
$imgHeight = imagesy($img);
$fontWidth = imagefontwidth($font);
$fontHeight = imagefontheight($font);
//计算字符串的起始坐标
$x = ($imgWidth -$fontWidth*strlen($str))/2;
$y = ($imgHeight – $fontHeight)/2;
//将验证码字符串写入画布上
imagestring($img,$font,$x,$y,$str,$color);
//输出图像
header("content-type:image/png");
imagepng($img,’./images/captcha_new.png’);
imagedestroy($img);
?>
[/php]