TaoGOGO的技术博客,始于2007年,通过文字分享技术、记录生活

php的count函数返回值的问题

今天一个群里有个小伙伴说php的count函数比较诡异。看了下源码(/PHP_5_3/ext/standard/array.c),代码如下:300PHP_FUNCTION(count) 301{ 302 zval *array; 303 long mode = COUNT_NORMAL; 304 305 if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|l", &array, &mode) == FAILURE) { 306 return; 307 } 308 309 switch (Z_TYPE_P(array)) { 310 case
发布时间:2014-02-21 | 类别: | 阅读:177956 | 评论:0 | 标签:php count

php禁用eval的问题

今天在一个群里,看到有人说:为了安全,在安装php后,要修改php.ini禁用eval函数,否则有人会使用$func="e"."val";$func('phpinfo')这种代码放置后门。这个人明显没有真正这样做过,其实上面这句话有多个错误:首先eval并非一个函数,而是一种语言结构,在php的list of keywords里面有说明(http://php.net/manual/en/reserved.keywords.php)再次作为一个语言结构,他是无法使用Variable functions来调用的(参见:http://www.php.net/manual/en/functions.variable-functions.php)最后eval无法使用php.ini里
发布时间:2013-05-13 | 类别: | 阅读:194309 | 评论:8 | 标签:php eval

php的foreach引用赋值的问题

今天汉城跑到我们这里来问了个问题,下面的代码为啥第二次打印出:Array(    [a] => aa    [b] => bb    [c] => bb)代码:<?php$a = array(    'a' => 'aa',    'b' => 'bb',    'c' => 'cc',);foreach( $a  as &$v){;}print_r($a);foreach( $a  as $v){}print_r($a);----------------------仔细想想,其实是简单的引用问题,第一次foreach完毕,
发布时间:2013-02-22 | 类别: | 阅读:185200 | 评论:3 | 标签:php foreach

php共享内存的使用

编译php时添加–enable-sys*的参数,或者后面再编译–enable-sys*相关的扩展(主要是sysvshm扩展)。 代码如下: <?php //申请共享内存空间 $string = "taogogo"; $shmop_id = shmop_open(0xff9, "a", 0, 0); if(empty($shmop_id)) { $shmop_id = shmop_open(0xff9, "c", 0777, 10); //10MB shmop_write($shmop_id, $string, 0); echo "shmop id:{$shmop_id}
发布时间:2011-02-20 | 类别: | 阅读:107539 | 评论:0 | 标签:php 共享内存

PHP变量写时复制导致的计算错误问题

$a = 1;$b=&$a;echo (++$b)+(++$b);输出结果你猜是什么?可能有些人以为是5,比如我…但是实际结果是6,why?其实这是个写时复制导致的问题。先看这段代码:$a = 1;$b=$a;echo (++$b)+(++$b);左侧++$b计算结束,$左值=$b;继续计算右边的++$b,在修改$b时,因为$b发生改变,与$左值不同,左值会复制一份,$左值=2,$b改变后,$b=3,所以$左值+$右值=5。而上面的代码,左侧++$b计算结束,$左值=$b;与上面相同。继续计算右边的++$b,在修改$b时,因为$左值是引用,所以并未复制出新变量。$左值=$b,所以相加后是6引用计数相关的资料可以在这里找到:http://www.php.net/manual/en/function.deb
发布时间:2010-07-19 | 类别: | 阅读:111811 | 评论:0 | 标签:php 写时复制

公告

҉百度内部推荐,高级研发/PM(需2年以上工作经验)。
有意者微博私信联系~

微博言语

文章分类