PHP:检查一个数组是否只包含连续的数字索引
      PHP将所有数组作为关联的,所以没有任何内置的功能。有没有一个比较有效的方法来检查数组只包含数字键?
    确切的说,我们希望能够实现这样的区分:
 $sequentialArray = array('apple', 'orange', 'tomato', 'carrot');
 和
 $assocArray = array('fruit1' => 'apple', 
                    'fruit2' => 'orange', 
                    'veg1' => 'tomato', 
                    'veg2' => 'carrot');
    用下面的方法可以做到:
<?php
function isAssoc($arr)
{
    return array_keys($arr) !== range(0, count($arr) - 1);
}
var_dump(isAssoc(array('a', 'b', 'c'))); // false
var_dump(isAssoc(array("0" => 'a', "1" => 'b', "2" => 'c'))); // false
var_dump(isAssoc(ar......
php二维数组排序
  有时候我们需要对二维数组按某一个键对应的值去排序,如下面的数组
Array
(
    [0] => Array
        (
            [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
            [title] => Flower
            [order] => 3
        )
    [1] => Array
        (
            [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
            [title] => Free
            [order] => 2
        )
    [2] => Array
        (
            [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
            [title] => Ready
            [order] => 1
        )
)
 
这是一个二维的数组,根据order键位的值顺序,当前的数组的排列可能不是我们想要的,我们可以用以下的方法对这个数组排序:
 
function aasort (&$array, $key) {
    $sorter=array();
    $ret=array();
    reset($array);
    foreach ($array as $ii => $va) {
        $sorter[$ii]=$va[$key];
    }
    asort($sorter);
    foreach ($sorter as $ii => $va) {
        $ret[$ii]=$array[$ii];
    }
    $array=$ret;
}
aasort($your_array,"order");
 
最后给出完整的测试代码:
 
<?php
function aasort (&$array, $ke......
用table输出指定行和列的数据。
      假设数据库的一个表里有16条数据,我们要输出其中一个字段的值,例如question_name,用table我们可以循环16行来把它显示出来,但实际上我们要用4行4列来做这个事情。要实现这个目的,我可以这样:
<table class="grid">
    <tr>
    <?php foreach ($result as $i => $row) : ?>
        <td><?= htmlspecialchars($row['question_name']) ?></td>
        <?php if (($i + 1) % 4 == 0) : ?></tr><tr><?php endif ?>
    <?php endforeach ?>
    </tr>
</table>
    你需要在每显示4个的时候做判断,来关闭一个tr,重新打开一个tr.
用table完成这项目标其实不是一个好的选择,用ul,li加css更好实现,这样不用每4个就来一个判断。例如:
?>
<ul class="grid">
    <?php foreach ($result as $row) : ?>
        <li><?= htmlspecialchars($row['question_name']) ?></li>
    <?php endforeach ?>
</ul>
css样式:
.grid {
    list-style: none;
    width: 512px;
}
.grid l......
ckfinder上传文件自动重命名
  ckfinder上传文件后会保持原来的文件名不变,来把上传的文件名保存在服务器上,有时候上传的文件名中含中文或一些特殊字符,会在调用的时候发生乱码,为了防止这种现象发生,我们要对上传的文件进行自动重命名。
以php版本为例
在目录core\connector\php\php5\commandHandler\中找到FileUpload.php文件。
大概在87行左右,在$sFileNameOrginal = $sFileName;这行代码下加入代码如下:
//文件自动重命名
$fileext=pathinfo($sFileName);
$sFileName=date('ymdHis',time()).sprintf("%02d",mt_rand(0,99)) . "." . $fileext['extension'];  //以当前日期加上随机数字
//结束文件自动重命
这样会以当前日期加上一个随机数来重新命名文件,这样也不会导致上传的文件重名。
代码截图
......
php简单的“长轮询”的实例代码
      我们可以在网上找到信息是如何长轮询的实例,但都比较复杂。这里提供一个简单的例子.前端用jquery,后台处理用php。
    注:Apache是不适合担任长轮询请求,这会很快耗尽服务器上的线程(因此提的例子并不需要扩展),只是一个通用的,简单的,用于了解具体的实现过程。
这里是一个非常简单的例子,在2-10秒后发送一个简单的字符串。 有三分之一的机会返回错误404(错误返回给JavaScript示例显示并处理),其中将“长轮询”服务器的返回信息.
    msgsrv.php
<?php
if(rand(1,3) == 1){
    /* Fake an error */
    header("HTTP/1.0 404 Not Found");
    die();
}
/* Send a string after a random number of seconds (2-10) */
sleep(rand(2,10));
echo("Hi! Have a random number: " . rand(1,10));
?>
    注意:对于一个真正的网站,一个普通的web服务器,比如Apache上运行,这将很快扳消耗所有的“工作线程”,让它无法响应其他请求。要解决这个问题,建议用python,它是不依赖于每个单一线程请求的“长轮询服务器”。 cometD是流行的一种(在几种语言中),以至Tornado专门为这样的任务做了一个新的框架(专为FriendFeed上的长轮询代码)......但作为一个简单的......
近期文章
- 织梦5.7{dede:php}标签不起作用的解决办法
 - php版本non-thread-safe和thread-safe的区别
 - 什么是fatal flex scanner internal error--end of buffer missed
 - php文件命名建议用小写
 - php cookie字典
 - seft和static在php中有什么不同
 - 用php快速获取图片大小
 - 用php的json_decode()检测json数据是否合法
 - php三个等号
 - unset和=null有什么不同
 - php如何捕获一个警告信息
 - 如何获得php数组中最后一个元素的键名?
 - 在PHP中,你如何改变数组中某一元素的键名?
 - php多维数组转xml
 - php如何转化数组为SimpleXML对象
 - php如何把数组定义为常量
 - php根据数组中的值删除数组中的元素
 - 计算两个日期相差多少天
 - 如何捕获var_dump的输出结果保存到一个字符串中?
 - 用php获取完整的URL