• 展开微博窗口
  • QQ:52619941
  • 微信:cnmemory
  • 展开分类目录
  • 还没有账号?

Memory

php实现二叉查找树

树的节点 /** * Class TNode * 节点类 */ class TNode { public $lnode = null; public $rnode = null; public $val = 0; public function __construct($val, $lnode = null, $rnode = null) { $this->val = $val; $this->l […]

关于php的pctnl扩展小记

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;
}

星期五

一道有趣的PHP题目

在网上看见一道题目,觉得挺有意思。 $arr = [1, 2, 3]; //第一次遍历 foreach($arr as &$val) {} //第二次遍历 foreach($arr as $val) {} //输出什么? var_dump($arr); 最终的结果输出了: array(3) { [0] => int(1) [1] => int(2) [2] => int(2) } 两次遍历 […]

PHP的对象和引用赋值

在PHP的手册上看到这么一句话 在php5 的对象编程经常提到的一个关键点是“默认情况下对象是通过引用传递的”。但其实这不是完全正确的。下面通过一些例子来说明。 php的引用是别名,就是两个不同的变量名字指向相同的内容。在php5,一个对象变量已经不再保存整个对象的值。只是保存一个标识符来访问真正的对象内容。 当对象作为参数传递,作为结果返回,或者赋值给另外一个变量,另外一个变量跟原来的不是引用的 […]

Mac下PHP安装libevent扩展

首先通过brew安装libevent,否则在编译libevent的时候会出现错误。 brew install libevent 如果没有安装Homebrew可以通过在终端执行 ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” < /dev/null 2> /dev/nu […]

记一CI框架的$_POST编码问题

最近在做支付回调接口时,碰到一个编码问题,由于第三方支付平台异步通知post方式请求使用的是GBK编码,而我们项目服务端使用UTF-8编码开发,所以在做signature验证时,我们需要将post的数据进行编码转换 iconv(“GBK//IGNORE”, ‘UTF-8’, $_POST[$key]); 然而转换的结果竟然和原文并不一致,导致MD5后的签名和第三方通知过来的签名不匹配。于是决定脱离 […]

使用PHP模拟一个迭代器

其实在PHP中,数组已经很方便使用了,模拟迭代器只是为了自己学习玩玩。 class Super { protected $data; public function __get($param) { if (isset($this->$param)) { return $this->$param; } } public function __set($param, $val) { if (isset […]

PHP中json_encode对中文的编码处理

很多时候我们在使用json_encode封装含有中文数据的时候,中文的编码总是会被编码为UNICODE 自从5.4之后,json_encode新增了一个JSON_UNESCAPED_UNICODE参数 echo json_encode(“中文”, JSON_UNESCAPED_UNICODE); 这样我们的汉字就不会被转换成Unicode码

php模拟链表

<?php class LinkTable { //头节点 public $head = NULL; //连接下一个节点 public $next = NULL; //连接上一个节点 public $prev = NULL; //用于存放节点数据 public $object = array(); public $len = 0; public function __construct($o […]

当foreach遇到PDOStatement:bindParam

前段时间在开发一个小项目的时候遇到了一个问题,只怪学艺不精,我们先看看代码: <?php $data = $_REQUEST[‘data’]; $sql = “update config set price1=?, price2=?, price3=? “; $stmt = $dbh->prepare($sql); foreach($data as $key=>$val) { $ […]