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