本文目录一览:
- 1、php几种排序算法实例详解
- 2、php去掉一维数组的键值的实例方法
- 3、PHP实现的pdo连接数据库并插入数据功能简单示例
- 4、php目录操作实例代码
- 5、php实现编辑和保存文件的方法
- 6、实现地址自动识别实例(PHP)
php几种排序算法实例详解
四种排序算法的PHP实现:
1) 插入排序(Insertion Sort)的基本思想是:
每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。
2) 选择排序(Selection Sort)的基本思想是:
每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。
3) 冒泡排序的基本思想是:
两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。
4) 快速排序实质上和冒泡排序一样,都是属于交换排序的一种应用。所以基本思想和上面的冒泡排序是一样的。
1. sort.php文件如下:
?php
class Sort 卜判{
private $arr = array();
private $sort = 'insert';
private $marker = '_sort';
private $debug = TRUE;
/**
* 构造函数
*
* @param array 例如:
$config = array (
'arr' = array(22,3,41,18) , //需要排序的数组值
'sort' = 'insert', //可能值: insert, select, bubble, quick
'debug' = TRUE //可能值: TRUE, FALSE
)
*/
public function construct($config = array()) {
if ( count($config) 0) {
$this-_init($config);
}
}
/**
* 获取排序结果
*/
public function display() {
return $this-arr;
}
/**
* 初始化
*
* @param array
* @return bool
*/
private function _init($config = array()) {
//参数判断
if ( !is_array($config) OR count($config) == 0) {
if ($this-debug === TRUE) {
$this-_log("sort_init_param_invaild");
}
return FALSE;
}
//初始化成员变量
foreach ($config 码弊颤as $key = $val) {
if ( isset($this-$key)) {
$this-$key = $val;
}
}
//调用相应的成员方法完成排序
$method = $this-sort . $this-marker;
if ( ! method_exists($this, $method)) {
if ($this-debug === TRUE) {
$this-_log("sort_method_invaild");
}
return FALSE;
}
if ( FALSE === ($this-arr = $this-$method($this-arr)))
return FALSE;
return TRUE;
}
/**
* 插入排序
*
* @param array
* @return bool
*/
private function insert_sort($arr) {
//参数判断
if ( ! is_array($arr) OR count($arr) == 0) {
if ($this-debug === TRUE) {
$this-_log("sort_array(insert)_invaild");
}
return FALSE;
}
//具体实现
$count = count($arr);
for ($i = 1; $i $count; $i++) {
$tmp = $arr[$i];
for($j = $i-1; $j = 0; $j--) {
if($arr[$j] $tmp) {
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
return $arr;
}
/**
* 选择排序
*
* @param array
* @return bool
*/
private function select_sort($arr) {
//参数判断
if ( ! is_array($arr) OR count($arr) == 0) {
if 迟败($this-debug === TRUE) {
$this-_log("sort_array(select)_invaild");
}
return FALSE;
}
//具体实现
$count = count($arr);
for ($i = 0; $i $count-1; $i++) {
$min = $i;
for ($j = $i+1; $j $count; $j++) {
if ($arr[$min] $arr[$j]) $min = $j;
}
if ($min != $i) {
$tmp = $arr[$min];
$arr[$min] = $arr[$i];
$arr[$i] = $tmp;
}
}
return $arr;
}
/**
* 冒泡排序
*
* @param array
* @return bool
*/
private function bubble_sort($arr) {
//参数判断
if ( ! is_array($arr) OR count($arr) == 0) {
if ($this-debug === TRUE) {
$this-_log("sort_array(bubble)_invaild");
}
return FALSE;
}
//具体实现
$count = count($arr);
for ($i = 0; $i $count; $i++) {
for ($j = $count-1; $j $i; $j--) {
if ($arr[$j] $arr[$j-1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $tmp;
}
}
}
return $arr;
}
/**
* 快速排序
* @by
* @param array
* @return bool
*/
private function quick_sort($arr) {
//具体实现
if (count($arr) = 1) return $arr;
$key = $arr[0];
$left_arr = array();
$right_arr = array();
for ($i = 1; $i count($arr); $i++){
if ($arr[$i] = $key)
$left_arr[] = $arr[$i];
else
$right_arr[] = $arr[$i];
}
$left_arr = $this-quick_sort($left_arr);
$right_arr = $this-quick_sort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}
/**
* 日志记录
*/
private function _log($msg) {
$msg = 'date[' . date('Y-m-d H:i:s') . '] ' . $msg . '\n';
return @file_put_contents('sort_err.log', $msg, FILE_APPEND);
}
}
/*End of file sort.php*/
/*Location htdocs/sort.php */
2. sort_demo.php文件如下:
?php
require_once('sort.php');
$config = array (
'arr' = array(23, 22, 41, 18, 20, 12, 200303,2200,1192) ,
//需要排序的数组值
'sort' = 'select',
//可能值: insert, select, bubble, quick
'debug' = TRUE
//可能值: TRUE, FALSE
);
$sort = new Sort($config);
//var_dump($config['arr']);
var_dump($sort-display());
/*End of php*/
php去掉一维数组的键值的实例方法
在 PHP 中,数组的旅如每个元素都是由键值对(key-value)组成,通过元素的键名来访问对应键的值。
提示:“索引”和“键名”指的是同一样东西,“索引”多指数组数字形式的下标。
有时候,我们需要去掉一维数组的键值(value),只留下数组的键名(key),这要怎么做?
此时,就可以使用array_keys()函数了。
array_key() 函数可以获取数组中的部分或所有键名,语法格式如下:
array_keys($array [, $search_value = null [, $strict = false]])
参数说明如下:
$array:必选参数,为待操作的数组;
$search_value:可选参数,如果参数为空,则函数会返回数组中的所有键名,如果指定了该参数,则函数就只会返回值为 $search_value 的键名;
$strict:可选参数,判断在搜索的时候是否使用严格模式袭镇大,$strict 默认为 false,也就是非严格模式,在搜索时只比较类型,不比较类型,若将 $strict 设置为 true,也就是严格模式,在搜索时同时比较值和类型,等价于===。-php实例
array_key() 函数会以数组形式返回得到的数组键名。
'it网', 'url' = '', 'title' = 'PHP学习教程', ); $key=array_keys($array); var_dump($key); ? -php实例
可以看到,去掉了一维数组的键值(value),只返回了一维数组的键名(key)。
内容扩展:
1、使用unset()函数可以用于取消设置关联数组中的键及其值。
// 声明关联数组 $arr = array( "1" = "加", "2" = "减", "3" = "乘", "4" 拍竖= "除" ); // 关联数组中删除键1及其值 unset($arr['1']); // 显示数组元素 var_dump($arr); -php实例
2、使用array_diff_key()函数用于获取一个或多个数组之间的差集。
此函数比较一个或多个数组之间的键并返回它们之间的差集。
// 声明关联数组 $arr = array( "1" = "春", "2" = "夏", "3" = "秋", "4" = "冬", ); // 从关联数组中删除键1及其值 $result = array_diff_key($arr, array_flip((array) ['1'])); // 显示数组元素 var_dump($result); -php实例
到此这篇关于php去掉一维数组的键值的实例方法的文章就介绍到这了。
PHP实现的pdo连接数据库并插入数据功能简单示例
本文实例讲述了PHP实现的pdo连接数据库并插入数据功能。分享给大家供大家参考,具体如下:
创建橡陪配置文件
pdo_config.php
?php
$db_Type
=
"mysql";//数据库类型
$host
=
"localhost";//主机名
$dbName
=
"test";//数据库名
$userName
=
"root";//用户名
$password
=
"梁旅蠢root";//密码
$dsn
=
"{$db_Type}:host={$host};dbname={$dbName}";
?
pdo插入数据库
pdo_insert.php
?php
header('Content-type:text/html;
charset=utf-8');
require
'pdo_config.php';
try{
$pdo
=
new
PDO
($dsn,$userName,$password);//创建一个连接对象
$pdo-exec('set
names
utf8');//设置编码
$sql
=
"INSERT
student
(name,email)
VALUES
('李四','123@qq.com')";
$pdo-exec($sql);
}catch
(PDOException
$e){
die('操作失败'.$e-getMessage());
}
//关闭连接
$pdo
=
null;
?
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基于pdo操作数据库技巧总结》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入镇雀门教程》及《php常见数据库操作技巧汇总》-php实例
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:关于php连接mssql:pdo
odbc
sql
serverPHP5中使用PDO连接数据库的方法PHP中PDO连接数据库中各种DNS设置方法小结ThinkPHP框架基于PDO方式连接数据库操作示例PHP使用ODBC连接数据库的方法tp5(thinkPHP5)框架连接数据库的方法示例PHP7使用ODBC连接SQL-php实例
Server2008
R2数据库示例【基于thinkPHP5.1框架】tp5(thinkPHP5)操作mongoDB数据库的方法thinkPHP5实现数据库添加内容的方法tp5(thinkPHP5)框架数据库Db增删改查常见操作总结PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】-php实例
php目录操作实例代码
这篇文章主要介绍了php目录操作实例代码,需要的朋友可以参考下
代码如下:
?php
/**
*
listdir
*/
header("content-type:text/html;charset=utf-8");
$dirname
=
"./final/factapplication";
function
listdir($dirname)
{
$ds
=
opendir($dirname);
while
(false
!==
($file
=
readdir($ds)))
{
$path
=
$dirname.'/'.$file;
if
($file
!=
'.'
$file
!=
'..')
{
if
(is_dir($path))
{
listdir($path);
}
else
{
echo
$file."br";
}
}
}
closedir($ds);
}
listdir($dirname);
核心:递归的经典应用,以及文件和目兄宴录的基本操作。
代码如下:
?php
/**
*
copydir
*/
$srcdir
=
"../fileupload";
$dstdir
=
"b";
function
copydir($srcdir,
$dstdir)
{
mkdir($dstdir);
$ds
=
opendir($srcdir);
while
(false
!==
($file
=
readdir($ds)))
{
$path
=
$srcdir."/".$file;
$dstpath
=
$dstdir."/知缓".$file;
if
($file
!=
"."
$file
!=
"..")
{
if
(is_dir($path))
{
copydir($path,
$dstpath);
}
else
{
copy($path,
$dstpath);
}
}
}
closedir($ds);
}
copydir($srcdir,
$dstdir);
核心:copy函数。
代码如下:
?php
/**
*
deldir
*/
$dirname
=
'a';
function
deldir($dirname)
{
$ds
=
opendir($dirname);
while
(false
!==
($file
=
readdir($ds)))
{
$path
=
$dirname.'/'.$file;
if($file
!=
'.'
$file
!=
'..')
{
if
(is_dir($path))
{
deldir($path);
}
else
{
unlink($path);
}
}
}
closedir($ds);
return
rmdir($dirname);
}
deldir($dirname);
核心:注意unlink删除的是带搭尘模path的file。
代码如下:
?php
/**
*
dirsize
*/
$dirname
=
"a";
function
dirsize($dirname)
{
static
$tot;
$ds
=
opendir($dirname);
while
(false
!==
($file
=
readdir($ds)))
{
$path
=
$dirname.'/'.$file;
if
($file
!=
'.'
$file
!=
'..')
{
if(is_dir($path))
{
dirsize($path);
}
else
{
$tot
=
$tot
+
filesize($path);
}
}
}
return
$tot;
closedir($ds);
}
echo
dirsize($dirname);
核心:通过判断$tot在哪里返回,理解递归函数。
php实现编辑和保存文件的方法
文章主要介绍了php实现编辑和保存文件的方法,涉及php针对文件的读取、编辑和保存操作的'相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下。
本文实例讲述了php实现编辑和保存文件的方法。分享给大家供大家参考。具体如下:
save_file.php:
?php
session_start();
$handle = fopen($_POST['original_file_name'], "w");
$text = $_POST['file_contents'];
if(fwrite($handle, $text) == FALSE){
$_SESSION['error'] = 'span class="redtxt"There was an error/span';
}else{
唤铅返 $_SESSION['error'] = 'span class="redtxt"File edited successfully/span';
}
fclose($handle);
header("Location: ".$_POST['page']);
?
read_file.php:
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
""
html xmlns=""
head
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /
titleUntitled Document/title
/head
form action="savecontents.php" method="post"
textarea name="file_contents" style="width:700px;height:600px;"
?php
$fileName = "location/of/orignal/file/my_file.php";
$handle = fopen($fileName, "r");
while (!feof($handle)){
$text = fgets($handle);
echo $text;
}
?
激态 /textarea
和饥 input type="hidden" value=" ? echo $fileName; ? " name="original_file_name" /
/form
body
/body
/html
希望本文所述对大家的php程序设计有所帮助。
实现地址自动识别实例(PHP)
文章正文
址自动识别现在普遍,特别是用在快递填写地址,姓名,手机号码的时候,会把这些按照一定的规范填写后,点击自动识别后,会自动填写到各自的input。最近也简单的实现了这个功能,给后台添加用户的时候,自动识别地址。以下是效果图-php实例
具体问题具体姿凯分析!代码实现基于laravel完成。一个laravel完整的功能得具备这些:路由route,Model, View, Controller, 我这里用的有依赖注入服务容器等功能,当然,用到地址,你首先要有地址库。。。-php实例
下面来看看是如何实现的,这里我只贴出核心代码
UsersController控制器
在伏册握这里新建构造函数,实现容器的依赖注入 UsersRepository
接下来就新缺庆建地址识别的方法, $discernDel 接收的数据是从前端传过来的,后面再贴前端代码。 业务代码处理交给容器 UsersRepository 里的方法 getDiscern 处理 -php实例
来看看 userRepository容器处理地址识别的各种业务代码
上面的方法处理手机,名称,和地址处理,地址处理有些繁杂,因为有时候填写的地址有不一样的,比如广西省,有些就填写广西壮族自治区,所以 getAddressArrar 方法处理地址匹配信息,根据自己的业务做调整,如下-php实例
前端html部分代码
基本上能看得懂的。jquery用到 getDiscern(); 方法,手机号码,姓名,地址等input这里就不一一列出了。大家根据下面的jquery都能想象到
jquery代码部分
ajax post后交给url: getDiscern 处理,这个就是上面controller的方法,success返回的数据后再追加到每个input里,最后再清除掉自动识别地址框的数据
整个过程简单,又清晰明了,以上就是我的代码,分享给大家,觉得哪个地方不对劲的,欢迎留言吐槽!