[求助]php类型转换

软件和网站开发以及相关技术探讨
回复
tandkzy
帖子: 512
注册时间: 2006-02-12 19:29

[求助]php类型转换

#1

帖子 tandkzy » 2013-04-16 10:05

代码: 全选

<?php
 function getScreenX(){
 	$res = "<script>document.write(screen.width);</script>";
 	return $res;
 }
 function getScreenY(){
 	$res =  "<script>document.write(screen.height);</script>";
 	return $res;
 }
?>
代码附上。是为取客户端屏幕分辨率。
现在,想进行如下计算。即将其缩小到0.9倍大小。意即getScreenX() * 0.9。结果为0。直接输出,如echo getScreenX(),结果得到正确的屏幕宽度(在本机上是1440)。尝试进行显式的类型转换,使用(int)操作符,结果(int) getScreenX(),得到0。
想问一下这是怎么回事。
另,曾设计程序取得当前的本地目录。使用system获取pwd的输出。即system("pwd", $pathX),打印正常,但若使用opendir试图以此来打开目录,即opendir($pathX),则失败。然而,直接用从变量$_SERVER['SCRIPT_NAME']中使用basedir获取目录则可以使用opendir()打开。
想问一下这是怎么回事。

操作系统ubuntu 12.04 64位
xiao7
帖子: 1
注册时间: 2013-01-13 23:33
系统: windows7

Re: [求助]php类型转换

#2

帖子 xiao7 » 2013-04-16 12:02

楼主大概没懂PHP的原理

代码: 全选

echo getScreenX()
当你使用这个的时候
getScreenX返回的并不是你的屏幕的宽度 而是

代码: 全选

<script>document.write(screen.width);</script>
这段字符串

这段是Javascript的代码 当在浏览器上显示的时候 会自动执行(具体右键查看页面源代码就知道了)

代码: 全选

<script>document.write(screen.width);</script>
这段代码的作用就是通过浏览器来获取的屏幕宽度 并且写入到html的内容当中


php在服务器端运行 而html和javascript在客户端运行,你获取的屏幕宽度 只是在html的层面上 所以int()实际上是对字符串操作 自然会得到一个0

如果要修改成0.9倍

代码: 全选

$res = "<script>document.write(screen.width*0.9);</script>";
这句改成这样就好

注意,这样改也只是显示的值变了 而不是真正的把屏幕宽度传递回php程序了 如果需要html和php多次不刷新通信,请自行学习ajax技术


第二个问题

一般来说打开路径失败的可能
1 路径不存在
2 权限不够
3 程序设置禁止打开 例如PHP的安全模式的某些设置



但楼主的问题因为后面的办法可以打开 所以不存在以上问题


所以这里想到的办法是把两种方法获得到的路径输出到页面上来 对比差异

顺便一提:PHP还是尽量不要用system这个函数 出于安全方面的考虑.

建议楼主仔细阅读PHP的手册内容 并重点阅读http://www.php.net/manual/zh/language.constant ... d.php这部分内容
头像
jarlyyn
帖子: 4671
注册时间: 2006-04-12 18:54
联系:

Re: [求助]php类型转换

#3

帖子 jarlyyn » 2013-04-16 12:31

你需要在js中进行操作
回复