前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入理解PHP读书笔记

深入理解PHP读书笔记

作者头像
lilugirl
发布2019-05-26 20:37:34
4030
发布2019-05-26 20:37:34
举报
文章被收录于专栏:前端导学

第一章 高级PHP技巧

1.1 多维数组排序

1.1.1 多维数组排序

代码语言:javascript
复制
$a=array(
   array('key1'=>940,'key2'=>'blah'),
   array('key1'=>23,'key2'=>'this'),
   array('key1'=>894,'key2'=>'that')
 );
 print_r($a);
 
 function asc_number_sort($x,$y){
   
    if($x['key1']>$y['key1']){
	  return true;
	}elseif($x['key1']<$y['key1']){
	   return false;
	}else{
	   return 0;
	}
 }
 
 usort($a,'asc_number_sort');
代码语言:javascript
复制
$a=array(
   array('key1'=>940,'key2'=>'blah'),
   array('key1'=>23,'key2'=>'this'),
   array('key1'=>894,'key2'=>'that')
 );

 

 function string_sort($x,$y){
   return strcasecmp($x['key2'],$y['key2']);
 }
 

 usort($a,'string_sort');
代码语言:javascript
复制
$students=array(
  256=>array('name'=>'John','grade'=>98.5),
  2=>  array('name'=>'Vance','grade'=>85.1),
  9=>  array('name'=>'Stephen','grade'=>94.0),
  364=>array('name'=>'Steve','grade'=>85.1),
  68=> array('name'=>'Rob','grade'=>74.6)
  );
  
  function name_sort($x,$y){
    return strcasecmp($x['name'],$y['name']);
  }
  
  function grade_sort($x,$y){
     return ($x['grade']<$y['grade']);
  }
  
  echo '<h2>Array As Is</h2><pre>'.print_r($students,1).'</pre>';
  
  uasort($students,'name_sort');
  echo '<h2>Array Sorted By Name</h2><pre>'.print_r($students,1).'</pre>';
  
  uasort($students,'grade_sort');
  echo '<h2>Array Sorted By Grade</h2><pre>'.print_r($students,1).'</pre>';

1.1.2 数据库驱动的数组

代码语言:javascript
复制
$dbc=mysqli_connect('localhost','root','','php');
 if(($_SERVER['REQUEST_METHOD']=='POST')&& !empty($_POST['task'])){
     if(isset($_POST['parent_id'])&& filter_var($_POST['parent_id'],FILTER_VALIDATE_INT,array('min_rang'=>1))){
	     $parent_id=$_POST['parent_id'];
	 }else{
	    $parent_id=0;
	 }
	 
	 $task=mysqli_real_escape_string($dbc,strip_tags($_POST['task']));
	 $q="insert into tasks(parent_id,task) values($parent_id,'$task')";
	 $r=mysqli_query($dbc,$q);
	 
	 if(mysqli_affected_rows($dbc)==1){
	    echo '<p>The task has been added</p>';
	 }else{
	    echo '<p>The task chould not be added!</p>';
	 }
	 
 }
 
 echo '<form action="add_task.php" method="post">
 <fieldset>
 <legend>Add a Task</legend>
 <p>Task:<input name="task" type="text" size="60" maxlength="100" required ></p>
 <p>Parent Task:<select name="parent_id"><option value="0">None</option>';
 $q='select task_id,parent_id ,task from tasks where date_completed="0000-00-00 00:00:00" order by date_added ASC';
 $r=mysqli_query($dbc,$q);
 $task=array();
 while(list($task_id,$parent_id,$task)=mysqli_fetch_array($r,MYSQL_NUM)){
    echo "<option value=\"$task_id\">$task</option>\n";
	$tasks[]=array('task_id'=>$task_id,'parent_id'=>$parent_id,'task'=>$task);
 }
 echo '</select></p>
 <input name="submit" type="submit" value="Add This Task">
 </fieldset>
 </form>
 ';
 
 function parent_sort($x,$y){
   return ($x['parent_id']>$y['parent_id']);
    
 }
 usort($tasks,'parent_sort');
 
 echo '<h2>Current To-Do List</h2><ul>';
 foreach($tasks as $task){
    echo "<li>{$task['task']}</li>\n";
 }
 echo '</ul>';

1.2 高级函数定义

递归函数 静态变量 以引用方式接收值 匿名函数

1.2.1 递归函数

递归 recursion 就是函数自己调用自己的行为。

代码语言:javascript
复制
<?php function make_list($parent){
	global $tasks;
	echo '<ol>';
	foreach($parent as $task_id=>$todo){
		echo "<li>".$todo;
		if(isset($tasks[$task_id])){
			make_list($tasks[$task_id]);
		}
		echo "</li>";
	}
	echo "</ol>";
}
$dbc=mysqli_connect('localhost','root','','php');
$q='select task_id,parent_id,task from tasks where date_completed="0000-00-00 00:00:00" order by parent_id,date_added asc';
$r=mysqli_query($dbc,$q);
$tasks=array();
while(list($task_id,$parent_id,$task)=mysqli_fetch_array($r,MYSQLI_NUM)){
	$tasks[$parent_id][$task_id]=$task;
}
echo '<pre>'.print_r($tasks,1).'</pre>';
make_list($tasks[0]);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一章 高级PHP技巧
    • 1.1 多维数组排序
      • 1.1.1 多维数组排序
      • 1.1.2 数据库驱动的数组
    • 1.2 高级函数定义
      • 1.2.1 递归函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档