我真的很困惑为什么这个操作有效.有人可以解释一下吗?
$test1 = "d85d1d81b25614a3504a3d5601a9cb2e";
$test2 = "3581169b064f71be1630b321d3ca318f";
if ($test1 == 0)
echo "Test 1 is Equal!?";
if ($test2 == 0)
echo "Test 2 is Equal!?";
// Returns: Test 1 is Equal!?
Run Code Online (Sandbox Code Playgroud)
为了澄清,我试图将字符串"0"与$test变量进行比较.我已经知道修复代码我可以附上(因为我应该有)的0在""小号
我想知道这是一个PHP错误,服务器错误,还是某种有效的操作.根据http://us3.php.net/types.comparisons,这应该没有用.
编辑: Scratch,显然它确实提到字符串和0之间的松散比较是真的.但我还是不知道为什么.
编辑2:我修改了我的问题,为什么$test2价值"3581169b064f71be1630b321d3ca318f"不起作用?
现在我正试图从服务器上提供CSS和JS文件,这些服务器不允许我启用mod_gzip或mod_deflate.所以我写了一个小的PHP脚本来压缩GZIP并返回给用户.
示例代码:
$filename = "style.css";
if (!file_exists($filename) || !($info = stat($filename))) {
header("HTTP/1.1 404 Not Found");
die();
}
header("Date: ".gmdate("D, j M Y H:i:s e", time()));
header("Cache-Control: max-age=2592000");
header("Last-Modified: ".gmdate("D, j M Y H:i:s e", $info['mtime']));
header("Etag: ".sprintf("\"%x-%x-%x\"", $info['ino'], $info['size'], $info['mtime']));
header("Accept-Ranges: bytes");
header("Cache-Control: Expires ".gmdate("D, j M Y H:i:s e", $info['mtime']+2592000));
header("Content-Type: text/html");
ob_start("ob_gzhandler");
echo file_get_contents($filename);
ob_end_flush();
Run Code Online (Sandbox Code Playgroud)
我现在有两个问题.首先,我无法确定压缩文件的结果大小,以通知浏览器内容长度.通常,我会包括这一行:
header("Content-Length: ".$info["size"]);
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做,浏览器会在尝试等待更多数据时挂起.有没有办法计算总大小?或者我应该忽略这个头指令.
另一个问题是,每当我在Firefox中查看此PHP文件时,它都会尝试让我下载结果.在Chrome中,它只是像我期望的那样显示它.有什么建议?
编辑:感谢SoapBox,我用这个替换了代码的结尾:
header("Content-Encoding: gzip");
$compressed = gzencode(file_get_contents($filename), 5);
header("Content-Length: ".strlen($compressed));
die($compressed);
Run Code Online (Sandbox Code Playgroud)
这适用于内容长度!但我仍然让Firefox下载文件而不是显示它.:(
再次编辑: …
我目前正在尝试找到平衡KD树的所有节点的K最近邻(K = 2).
我的实现是来自维基百科文章的代码的变体,并且找到任何节点O(log N)的 KNN都非常快.
问题在于我需要找到每个节点的 KNN . 如果我遍历每个节点并执行搜索,则计算大约O(N log N).
有没有更有效的方法来做到这一点?
我目前正在通过生成HTML并更改标题信息来创建Word文档以显示为.doc文件.这是一个穷人的方法,但它工作得很好(直到现在).
我被要求在文件中包含一个图像.我最好的想法是base64嵌入图像.这在浏览器中工作正常,但是Word只给了我一个带有X的框.
关于如何将图像嵌入此文件并将其显示在Microsoft Word中的建议?
这样做的目的是将一些行从一个环境复制到另一个环境而不覆盖现有行.
样本数据库:
INSERT INTO `school` (school_id,name) VALUES (15,'Middle');
INSERT INTO `class` (class_id,school_id,name) VALUES (12,15,'Sample');
Run Code Online (Sandbox Code Playgroud)
我们的想法是school_id和class_id有自动递增,并class有一个外键链接回school.但我想转储只是这些行并把它们插入到已经有其他数据库school_id的15.
它可能是这样的东西:
INSERT INTO `school` (name) VALUES ('Middle');
INSERT INTO `class` (school_id,name) VALUES (LAST_INSERT_ID(),'Sample');
Run Code Online (Sandbox Code Playgroud)
但那只是为了这个简单的例子.想象一下,如果我有50个班级,每个班级有25名学生,每个学生/班级组合有几百个等级.如果LAST_INSERT_ID()不将其存储在一系列变量中,您可以看到它可能无法工作.
做这种操作的适当工具是什么?可以mysqldump做任何聪明的事吗?
我遇到了PHP 5.3命名空间和Doxygen评论的问题.
例:
/**
* Sample Method
*
* @param string $output
* @return \Project\Lib\Rest
*/
Run Code Online (Sandbox Code Playgroud)
Doxygen给了我以下警告:
warning: Found unknown command `\Project'
warning: Found unknown command `\Lib'
warning: Found unknown command `\Rest'
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决此问题或关闭\命令并仅使用@commands
基本上,我想从STDIN读取行,但我不想在等待新数据时阻塞.几乎就像使用超时的流一样.
$stdin = fopen('php://stdin', 'r');
do {
$line = fgets($stdin);
// No input right now
if (empty($line)) {
// Do something before waiting for more input
}
} while (1);
Run Code Online (Sandbox Code Playgroud) 例如,如果我的扩展程序覆盖newtab页面,并且用户安装另一个也覆盖newtab页面的扩展程序.目前,只有一个newtab扩展显示,它通常不是我的.
我该怎么做才能检测到何时发生这种冲突并通知用户?
该管理API并没有告诉我,如果扩展覆盖任何网页,让我遗憾的是不能使用的.
我希望在检测到运动时记录 MJPEG 流。但我的运动检测通知比运动发生晚了几秒钟。
为了解决这个问题,我想一直录制,但只保留最后 2 分钟的镜头。
现在我正在使用 cURL 无限下载,但我一直在思考如何让它将文件的前面正确地修剪为 2 分钟。
我可能会在秋季教授本科PHP/MySQL课程,并且想知道是否有人对优秀教科书有任何建议.
这些书必须面向初级/中级(我假设/希望我的学生在我之前会有C++和MsSQL课程).
我想在PHP中介绍的主题:
在MySQL中:
可能处理: