<?php
//用面向对象的方法写 将猴子选大王实现 同样数3退1
class Monkey {
/**
* 定义猴子类
* 属性 编号 $id
* 左手 $left 表示的当前猴子左边的猴子
* 右手 $right 表示的当前猴子右边的猴子
*/
public $id;
public $left;
public $right;
}
class Circle{
/**
* 定义圈类
* 属性 猴子的总数 $ct
* 开始的猴子 $first
* 结束的猴子 $last
*/
public $ct = 0;
public $first;
public $last;
//构造方法创建圈
//参数是猴子的个数
function __construct($c){
for($i=0;$i<$c;$i++){
$this->add();
}
}
//猴子的添加方法
function add(){
$m = new Monkey();
$m->id = $this->ct;
if($this->ct==0){
$this->first = $m;
$this->last = $m;
$m->left = $m;
$m->right = $m;
}else{
$this->last->right = $m;
$m->left = $this->last;
$m->right = $this->first;
$this->first->left = $m;
$this->last = $m;
}
$this->ct++;
}
//猴子的删除方法
function del($m){
if($this->ct <=0){
return;
}else if($this->ct == 1){
$this->first = $this->last = null;
}else{
$m->left->right = $m->right;
$m->right->left = $m->left;
if($m == $this->first){
$this->first = $m->right;
}else if($m == $this->last){
$this->last = $m->left;
}
}
$this->ct--;
}
}
/*
这里的代码就是实现让500只猴子围城一圈然后
数三个退一个就这样直到还剩一个把那猴子的编号打印出来
*/
$circle = new Circle(500);
$number = 0;
$mk = $circle->first;
while($circle->ct > 1){
$number++;
if($number == 3){
$number = 0;
$circle->del($mk);
}
$mk = $mk->right;
}
echo $circle->first->id;
?>
分享到:
相关推荐
面向对象设计是编程领域中的一个重要概念,特别是在PHP5及更高版本中得到了显著强化。本教程主要探讨PHP5的面向对象进阶特性,特别是类的重写(Override)机制。通过以下列出的源码文件,我们可以深入理解这一概念。...
自主封装的PHP ORM框架,面向对象的PDO数据库操作,API框架,支持Get/Post/Put/Delete多种请求方式。 代码示例: <?php use Models\User; require '../application.php'; require '../loader-api.php'; //适合...
面向对象编程的内存管理 - **避免过度继承和对象实例化**:过度的对象创建和层次复杂的继承链会消耗大量内存和CPU资源。 #### 15. 内存缓存技术 - **使用 Memcached**:Memcached 是一种高性能、分布式内存对象...
1. 面向对象编程的增强:在PHP5中,类和对象的概念得到了强化。类定义支持访问控制(public, private, protected),构造函数和析构函数的引入,以及抽象类和接口的实现,使得PHP更符合面向对象的设计原则。 2. ...
php手册中文版,这里面既有面向过程的写法,也有面向对象的写法,所有函数列举了一个甚至多个例子来教你如何使用。 居家必备!最好的语言的证据之一
6. **对象(object)**:面向对象编程的基本单元。 7. **资源(resource)**:表示外部资源的引用,如数据库连接。 8. **NULL**:表示变量没有值。 此外,PHP还支持混合类型(mixed),可以容纳任何类型的值,以及...
面向对象结构编写,开源代码,注释清析; 独家支持原生态, smarty 及discuz 三种模式的模板引擎. 配置更简单,为了方便ZEND工具自动提示,特别命令规范. 特别支持静态替换功能. {html xxxx} 增加生成静态化技术. ...
以上总结了新浪PHP工程师面试题中涵盖的一些重要知识点,包括PHP的基础语法、面向对象编程、数据库技术、网络协议等方面。通过这些题目的解析,可以帮助读者更好地理解PHP编程的核心概念和技术细节,为实际工作中的...
2004年,PHP 5发布,引入了面向对象编程的支持,提高了性能和稳定性。最新的PHP 7.x系列进一步优化了性能,带来了更强大的类型系统和错误处理机制。 二、jQuery的崛起 jQuery由John Resig于2006年发布,它以其简洁...
4. **数据库访问层**:提供ORM(对象关系映射),使得开发者可以使用面向对象的方式来操作数据库,提高代码可读性和可维护性。 5. **API接口**:zentao提供了丰富的API接口,方便与其他系统集成,如RESTful API,...
邓州英文PHP留言本采用面向对象,全站操作全部是用CLASS写法,把根目录的SQL文件导入到数据库就可。采用html template技术, 模板修改起来就跟php的模板一样简单。数据库连接文件:inc/sql.class.php 后台功能: 1....
- **面向对象支持**:从PHP 4开始支持面向对象编程,并在后续版本不断完善。 - **低成本**:LAMP(Linux, Apache, MySQL, PHP)或LNMP(Linux, Nginx, MySQL, PHP)组合是常见的低成本Web开发方案。 - **开源**:...
对于标签“PHP”,这意味着这个工具是用PHP语言编写的,所以开发者需要熟悉PHP的基本语法、函数库以及面向对象编程的概念。PHP是一种广泛使用的服务器端脚本语言,尤其适合Web开发。通过学习PHP,开发者可以自定义...
现在推荐使用`mysqli_*`或PDO扩展来与MySQL交互,它们提供了更好的性能、安全性和面向对象的接口。例如,使用`mysqli_connect()`和`mysqli_query()`来替代`mysql_connect()`和`mysql_query()`。 6. **预处理语句和...
以上就是PHP工程师面试笔试真题的相关解析,涵盖了PHP语言特性、Web开发基础、正则表达式、面向对象编程、数据库操作以及HTTP协议等多个方面。掌握这些知识将有助于提升PHP工程师的技能水平和面试准备。
对象是面向对象编程的基础,PHP支持类(class)的定义和实例化(object),如: ```php class Greeting { public function sayHello($name) { echo "Hello, $name"; } } $obj = new Greeting(); $obj->sayHello(...
在面向对象编程中,静态方法不依赖于类的实例,因此它们的调用速度比实例方法快。在测试时,静态方法的执行速度可能会提高近三倍,尤其是在高频次执行时,效果更加明显。这是因为静态方法在程序开始执行时就已经在...
PHP5.6是PHP的一个版本,包含了很多改进和新特性,比如面向对象编程的增强、错误处理的改进、更好的数组处理功能和新的函数。它可以嵌入到HTML中,与数据库交互(如MySQL),处理用户表单数据,生成动态网页内容。 ...
- 遵循最佳实践,如编写注释、使用命名空间、面向对象编程等,可以使代码更易于维护和扩展。 总的来说,这个压缩包为我们提供了一个研究PHP 7.2环境下的代码实现的机会,通过阅读和分析`main.php`,我们可以学习...
面向对象的方式能够更好地组织代码结构,提高可复用性和可维护性。 1. **创建分页类:** ```php class ShowPage { // 类属性定义 public $link; // 数据库连接 public $query; // 查询语句 public $pagesize ...