php实现二叉查找树
树的节点
/**
* Class TNode
* 节点类
*/
class TNode
{
public $lnode = null;
public $rnode = null;
public
… 树的节点
/**
* Class TNode
* 节点类
*/
class TNode
{
public $lnode = null;
public $rnode = null;
public
… pcntl扩展在加载的时候,在初始化module的阶段会将pcntl_signal_dispatch方法作为tick事件发生时的触发函数,所以使用declare(ticks = 1)也能捕捉到信号量。
PHP源码剖析如下:
PHP_MINIT_FUNCTION(pcntl)
{
php_register_signal_constants(INIT_FUNC_ARGS_PASSTHRU);
php_pcntl_register_errno_constants(INIT_FUNC_ARGS_PASSTHRU);
php_add_tick_function(pcntl_signal_dispatch TSRMLS_CC);
return SUCCESS;
}
在网上看见一道题目,觉得挺有意思。
$arr = [1, 2, 3];
//第一次遍历
foreach($arr as &$val) {}
//第二次遍历
foreach($arr as $val) {}
//输出什么?
var_dump($arr);
最终的结果输出了:
array(3)
… 在PHP的手册上看到这么一句话
在php5 的对象编程经常提到的一个关键点是“默认情况下对象是通过引用传递的”。但其实这不是完全正确的。下面通过一些例子来说明。
php的引用是别名,就是两个不同的变量名字指向相同的内容。在php5,一个对象变量已经不再保存整个对象的值。只是保存一个标识符来访问真正的对象内容。 当对象作为参数传递,作为结果返回,或者赋值给另外一个变量,另外一个变量跟原来的不是引用的关系,只是他们都保存着同一个标识符的拷贝,这个标识符指向同一个对象的真正内容。
并且提供了这么一个例子
class A {
public $foo = 1;
}
$a = new A;
$b =
… 首先通过brew安装libevent,否则在编译libevent的时候会出现错误。
brew install libevent
如果没有安装Homebrew可以通过在终端执行
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
进行安装Homebrew
接着我们直接使用pecl安装libevent
sudo pecl install libevent
编译完成后,在php.ini中加上
extension=libevent.so
在终端下输入命令,查看是否安装成功…
最近在做支付回调接口时,碰到一个编码问题,由于第三方支付平台异步通知post方式请求使用的是GBK编码,而我们项目服务端使用UTF-8编码开发,所以在做signature验证时,我们需要将post的数据进行编码转换
iconv("GBK//IGNORE", 'UTF-8', $_POST[$key]);
然而转换的结果竟然和原文并不一致,导致MD5后的签名和第三方通知过来的签名不匹配。于是决定脱离CI框架写一个简单的demo来获取第三方平台通知的数据内容是否正确,发现在原生php下,第三方平台post过来的数据是正常的,而在CI框架下,$_POST获取到数据的汉字编码字符却和原生PHP下$_POST获得的字符不一致。为了解决问题,尝试使用
$data = file_get_contents("php://input");
来获取原始数据,简单的将方法进行封装
function get_input_value() { static $content = null;…
其实在PHP中,数组已经很方便使用了,模拟迭代器只是为了自己学习玩玩。
class Super {
protected $data;
public function __get($param) {
if (isset($this-$param)) {
return $this-$param;
}
}
public
… 很多时候我们在使用json_encode封装含有中文数据的时候,中文的编码总是会被编码为UNICODE
自从5.4之后,json_encode新增了一个JSON_UNESCAPED_UNICODE参数
echo json_encode("中文", JSON_UNESCAPED_UNICODE);
这样我们的汉字就不会被转换成Unicode码…
<?php
class LinkTable {
//头节点
public $head = NULL;
//连接下一个节点
public $next = NULL;
//连接上一个节点
public $prev = NULL;
//用于存放节点数据
… 前段时间在开发一个小项目的时候遇到了一个问题,只怪学艺不精,我们先看看代码:
<?php
$data = $_REQUEST['data'];
$sql = "update config set price1=?, price2=?, price3=? ";
$stmt = $dbh->prepare($sql);
foreach($data as $key=>$val)
…
最新评论