广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 3824 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
anstd 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 社区建设奖
头衔:No bloodNo blood
版主
级别: 版主 该用户目前不上站
推文 x27 鲜花 x638
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[PHP][讨论] 我的PHP学习笔记(2)└变数┘  (版权没有,盗版随便)
作者:红军©2005-11-21
版权没有,盗版随便

前言:
变数是拿来干麻的?
管它这么多,决对不是拿来吃大便的就是了..@_@
主讲者:1加到100你会怎么加?
路人甲:我会我会!!拿计算机1加到100
主讲者:....@#$%...(换我想翻桌..XD)

认真一点啦...XD!!

最笨的方式,譬如
1+2=3,把3记在旁边纸上
3+3=6,把6记在旁边纸上
4+6=10,把10记在旁边纸上
.
.
.
上例中的白纸,其实作用就好像是一个变数
而前面的算式呢?你可以直接想成是程式运算
但若真的把程式写成那样,你不吐血才怪..XD
所以就发展一下吧
<?
$a=1;
$b=100;
$c=100/2;
$d=($a+$b)*$c;
echo $d;
?>
【物件导向】这个名词,也不过就是要我们以【数学的函数观念来思考】
不用怕,就算只会1+1=2也写的出来
只是程式长短问题而已,天天花一点时间写些程式练习就会进步的
好噜,扯远了,开始要拉回来一下下

●变数命名
几个原则而已
(1)一定以$开头,不用怀疑
(2)$后第一个字元只能底线或英文大小写字母
    ex:$_ 或 $a 或 $A
    $a不等于$A ,大小写有区分
(3)$后第二个字元可以用底线、英文大小写字母、数字

ok开始噜

$girl               //合法
$Girl               //合法,但跟$girl完全没关系
$_girl01         //合法
$girl_how_much     //合法
$MY_BROTHER         //合法
$ABC               //合法
$123               //OOPS!!开头不能为数字喔
$girl-love         //OOPS!!不可以用-

有些新手会很随便,随性的取无意义变数名称
譬如
$a = $b * $c;
是没差啦,一样能跑
只是哪天你写完了一长串之后,想回过头来看自己写了啥碗膏
大概心中会有一阵寒风吹过吧....(在写瞎米碗糕,鬼才看的懂=O=!!)
...糟,我前面例子好像也是...XD
但写笔记嘛‧‧‧懒的去想什么变数名称,看的懂在干麻,会用就好
所以.....嘿

●设定变数初始值
废话少说,有请 $a $b $c 出场.... |||

$a = 1;
$b = 1.2;
$c = "娘什么?老子都不老子了";

以上是立即值,还没有写程式就先给他指定一种资料形态
建议由右向左看,怎么说?就是
我把1丢给$a
我把1.2丢给$b
我把胡适在哭X的一句话丢给$c
为什么要这样看?我爽‧‧XD!!
没啦!!这跟接下来要谈到的运算试有关

$i = 1;
$i = $i+1;
echo $i

想想看,这时echo出来的$i是多少

第一行我们把1丢给了$i
第二行我们把$i再加上1,然后再丢给$i
第三行我们把$i叫出来,答案是2!
若你从左读到右...那有可能会脑筋转不太过来
第一行没问题
第二行,疑?$i=$i+1,那不就1=1+1
然后脑神精开始错乱,YA!!我改写数学历史 1=1+1耶.... (=_=)

其实这边讲这样就够了吧...?其他只是自己练习写一些怪怪的运算试去玩就行了XD!!

●传值
疑?这又是何许人也

$a = 100;         //100丢给$a
$b = $a;         //$a丢给$b,这就是传值
$b = $b+10;         //$b加上10,丢给$b
echo "\$a=$a <br>" . "\$b=$b"; //这段看不懂的基本上请重修资料型态

叫出$a跟$b后可以发现
$a=100
$b=110
$b经过加10的动作变成110,由此可发现,当$a传给$b后
两者就是毫无关系的两个变数!

●传址
...传不烦呀,它又是瞎许?
乖...我们来让它现出原形

$a = 100;
$b = $a;
$c = &$a;     //传址...点点点
echo "\$a=$a" . "\$b=$b" . "\$c=$c <p>";
$b = $b + 10;
$c = $c + 20;
echo "\$a=$a" . "\$b=$b" . "\$c=$c";

第4行echo出来后,$a=100 $b=100 $c=100 ,看起来没有什么问题
第7行echo出来后,$a=120 $b=110 $c=120 ...why?我没设定$a呀!!
因为$c一开始我们设定为 $c = &$a,在变数前面加上&
代表的是【将$a储存的记忆体空间与$c共用】
所以我们最后的运算式中$c = $c + 20
既然记忆体空间共用,那$c加了多少,$a也会一样呀 XD!!

●全域与区域变数
那个‧‧‧就是‧‧‧
先弄个结构好了

<?
    $man1 = 'Dino'         //两个男生在客厅
    $man2 = 'Ken'
    echo "$man2 <br>";     //在客厅叫男生2号,Ken答有!
    echo "$girl2";         //在客厅叫女生2号,她听不到
    function GirlRoom(){
    $girl1 = 'Anna'     //两个女生在房间
    $girl2 = 'Vivienne'
    echo "$man1 <br>";     //在房间喊男生1号,他不晓得
    echo "$girl1 <br>";     //在房间喊女生2号,Vivienne说;瞎小...(好凶)
    }
    GirlRoom();
?>
在客厅的,就是全域变数,房间内的,就是区域变数噜 :-)
....想开房间吗....嘿嘿...(色鬼..|||)
那也要女生同意,男生才能进去呀..XD
这时有请global出场!!
<?
    $man1 = 'Dino'        
    $man2 = 'Ken'
    echo "$man2 <br>";
    echo "$girl2";
    function GirlRoom(){
    global $man1, $man2;     //打开门,让色狼进来
    $girl1 = 'Anna'
    $girl2 = 'Vivienn'
    echo "$man1 <br>";         //死兔崽子,马上冲第一,一喊马上叫
    echo "$girl1 <br>";
    }
    GirlRoom();
?>

这告诉我们什么?打开门色狼马上来...嗯嗯...有理..(羞...)
奶奶个碗糕啦XD...这告诉我们全域变数无法直接在函数中使用!
若要使用,就要用global来宣告!!
若你有看过笔记一,仍旧无法使用global...
同学,认真一点,google大师随便问都知道喔 :-)
休息一下,我去开房间..... 表情
=====分格线=====
作者:红军©2005-11-23
版权没有,盗版随便

接续前面提到的global
现在就来聊聊$GLOBALS阵列吧
使用$GLOBALS就不用在函数中宣告变数为全域变数
譬如
<?
    function Test(){
    $GLOBALS["c"]=$GLOBALS["a"]+$GLOBALS["b"]; //以$GLOBALS方式
    }
?>
<?
    $a=10;
    $b=20;
    $c=0;
    Test();         //呼叫function test
    echo "\$a=$a , \$b=$b , \$c=$c"; //显示$a=10 , $b=20 , $c=30
?>
在上例中并没有以global宣告全域变数$a $b $c
而是使用$GLOBALS阵列方式,以阵列中的变数名称做为index
然后就取得全域变数的值....嗯嗯...很好,一堆屁话
靠X...就是
$GLOBALS["a"]就取得$a值,一句话解决...
那个...没事做的人,不要再想了
快点!!没事就开个笔记本写写PHP练习也行
有动作才有进步喔   :-)

●静态变数
<?
    function Hmm(){
    $i=0;
    $i=$i+1;
    echo "\$i=$i , ";
    }
    Hmm();
    Hmm();
    Hmm();
?>
呼叫三次自定函数Hmm来看看
$i=1 , $i=1 , $i=1 ,
三次的结果都是$i=1
每当执行完一次函数后,变数$i马上就被杀头
下回再叫出来,结果还是现出$i=1,然后再杀头
‧‧若要让他出现
$i=1 $i=2 $i=3 ,那该如何做呢
这时就需要用到静态变数static的帮忙
<?
    function Hmm(){
    static $i=0;         //将$i设为静态变数,且static只能用于函数中
    $i=$i+1;
    echo "\$i=$i ";
    }
    Hmm();
    Hmm();
    Hmm();
?>
执行结果
$i=1 $i=2 $i=3
利用static的功能,将$i值保存于记忆体中
不因为函数跑完了,就被杀头

●动态变数
讲到这个我就头大
真的是有够给他混乱....Orz
不过没关系,就算用不到,概念也要知道 ^^
使用方法倒是很简单
<?
$dino = "ken";         //最常用的变数设法
$$dino = "leo";         //看到没?多了一个$,这就是动态变数
echo "$dino<br>";         //(1)结果ken
echo "$$dino<br>";         //(2)结果$ken
echo "${$dino}"."<br>";     //(3)结果leo
echo $ken . "<br>";         //(4)结果leo
echo $$dino . "<br>";     //(5)结果leo
?>

(1)原式"$dino";结果ken
没问题吧...跳过

(2)原式"$$dino";结果$ken
看起来应该要输出的是leo,怎么会跑出$ken?
将$$dino拆开来看,其实是长这样
原式为($)($dino),由于在【双引号中】将$dino=ken代入
得($)(ken),双引号跑完噜,就直接跑出$ken
那,那$ken也是变数噜?我们来看下面

(3)原式"${$dino}";结果leo
用【大括号】将$dino包住,这变数的结果会是ken
但【双引号】仍在,于是将$ken视为变数,输出
所以得leo

(4)原式$ken;结果leo
没啥,拿来证明(3)是对的..XD

(5)原式$$dino;结果leo
不加双引号的情况下,将变数直接读出来而已

有没有觉得很头大呀..=_=...反正整理一下
上例只有2个变数名称 $dino $ken
1个动态变数名称 $$dino
以及两个值 ken leo

证明了写程式的人,脑筋都要打结外加抽筋
发明程式的人,不晓得是不是经过外星人改造脑部构造..=_=
动态变数也可以用于阵列中
<?
     $anstd[0]="a";
     $anstd[1]="b";
     $a=100;
     $b=200;
     echo "显示为".$$anstd[0].'....为什么?<br>'
     echo "因为$$anstd[0]=$a";
     echo "显示为".$$anstd[1].'....为什么?<br>'
     echo "因为$$anstd[1]=$b<br>";
?>
结果如下
显示为1....为什么?
因为$a=100
显示为2....为什么?
因为$b=200

程式码与结果比对一下,应该就晓得了吧

再来一个试看看
<?
     $name="A";
     $A[0]="good";
     $A[1]="bad";
     $good="好呀!";
     $bad="真烂";
     $b="C";
     $$b='D'
     echo $name . '<br>'
     echo $C . '<br>'
     echo ${${$name}[0]} . '<br>'
     echo ${$name}[0];
?>
显示结果为
A
D
好呀!
good


[ 此文章被红军在2005-11-29 07:21重新编辑 ]



献花 x1 回到顶端 [楼 主] From:台湾中华电信 | Posted:2005-11-22 16:07 |
anstd 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 社区建设奖
头衔:No bloodNo blood
版主
级别: 版主 该用户目前不上站
推文 x27 鲜花 x638
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

作者:红军©2005-11-29
版权没有,盗版随便

●预设变数
这个就‧‧‧这样讲好了
大家在上网时,常常会碰到网站将你的相关资料列出
比方说什么浏览器,IP,作业系统等等之类的
这些资料通常已经存在于网路通信协定内
所以只需下达一些查询相关资料的变数即可
echo一下来看看吧

<?
    echo "使用者IP位址". $_SERVER['REMOTE_ADDR'].'<br>'
    echo "使用者相关资讯". $_SERVER['HTTP_USER_AGENT'];
?>
$_SERVER其中一个预设变数,其他的譬如$_GET,$_POST,$_ENV‧‧等等之类
可以到PHP官方网站查一下

●变数型态转换
没事转什么转?若真的没事就不会要你转了呀‧‧‧
譬如今天要你写一个东东
我有234张A光,一个盒子最多装12张
我可以装满几个盒子??

<?
    $a_cd = 234;
    $box = $a_cd/12;
    echo $box;
?>

ok,echo出来,我可以装满19.5个盒子
什么叫做19.5个盒子‧‧‧XD!!!,很怪吧
所以给他转一下资料型态为int

<?
    $a_cd = 234;
    $box = $a_cd/12;
    echo (int)$box; //转成int型态后,强迫变为整数
?>

可以强迫转换的有哪些?
(1)int | integer
(2)bool | boolean
(3)float | double | real
(4)string
(5)array
(6)object
这个自己去玩看看,因为很简单
看你想转成啥型态就加上(xxx) <==xxx为想转的型态
接下来要介绍gettype()还有var_dump()
这在干嘛用的?其实只是拿来问看看某某变数它的型态是瞎米碗膏

<?
    $a = 11.11;
    $b = (int)$a;
    $c = (string)$a;
    echo "\$a = $a 型态为" . gettype($a) . '<br>'     //型态为double<=也是float都是浮点数
    echo "\$b = $b 型态为" . gettype($b) . '<br>'     //型态为integer
    echo "\$c = $c 型态为" . gettype($c) . '<br>'     //型态为string
    var_dump($a);         //float(11.11)
    echo '<br>'
    var_dump($b);         //int(11)
    echo '<br>'
    var_dump($c);         //string(5) "11.11"
?>

第二种转换型态的方式为settype()
譬如settype($a,string);     //将$a转为浮点数型态
<?
    $a=123456;
    settype($a,string);
    echo "\$a = $a 型态为" . gettype($a);
?>
这种方式除了可转上一种方式能转的型态外
也可以转NULL

●如何读取外部变数
讲了这么多废话‧‧好像都没有瞎米成果
只有echo来echo去的.... ^^"
其实我是觉得,慢慢的一步步来学习
虽然过程长,但是慢工出细活,会比较好
之后碰到问题会比较好解决

会想学PHP无非是想要透过它来完成互动式网业
譬如留言版就是一个很好的例子!
这篇并不会一下子就讲到那去,一切由表单开始
※建议以UTF-8来编,别用Big-5,许功盖问题
※有问题先找google吧..真是用PHP写中文网站的痛=_=

做一个档名为test1.htm
<html>
<body>
    <b>自我介绍<p></b>
    ●===========================●<p>
    <form action="test1.php" method="get">
        我的名字         <input type=test name=myname size=20><p>
        我性别是<br><input type=radio name=mysex value=1>男<br>
                                    <input type=radio name=mysex value=2>女<br>
        我家住哪         <input type=test name=myadd size=20><p>
        我的简介<br><textarea rows="5" cols="30" name=myinfo></textarea><p>
        <input type=submit value="好了">
        <input type=reset value="重填"><br>
        ●===========================●
    </from>
</body>
</html>
用浏览器打开吧,直接点【好了】
会出现错误‧‧废话,我们form要传送到test1.php又还没做
是要你看网址的地方
test1.php?myname=&mysex=&myadd=&myinfo=
看到没,就是将myname,myadd,myinfo丢到test1.php
所以我们再做一个档名为test1.php
<?
    //判断是否有输入姓名
    if($_GET['myname']==""){
        echo "我没名字<p>";
        }else{
        echo "我的名字叫" . $_GET['myname'] . '<p>'
        }
   
    //判断是否有点选姓别
    if ($_GET['mysex'] == 1) {
        echo "我是男生<p>";
        }elseif ($_GET['mysex'] == 2){
        echo "我是女生<p>";
        }else{
        echo "我没输入,所以我是人妖<p>";
        }
   
    //判断是否有输入住哪里
    if($_GET['myadd']==""){
        echo "我是无壳蜗牛<p>";
        }else{
        echo "我家住在" . $_GET['myadd'] . '<p>'
        }
   
    echo "以下是我的简介<hr>";
   
    //判断是否有自我介绍
    if($_GET['myinfo']==""){
        echo "我不想说任何话<hr>";
        }else{
        echo $_GET['myinfo'] . '<hr>'
        }
   
?>
这样应该知道怎么使用了吧 ^^"
有空练习做些奇奇怪怪的表单
对于提升写作能力会有很大的帮助喔

我的PHP学习笔记(2)└变数┘ (end)
版权没有,盗版随便..@.@


[ 此文章被红军在2005-11-29 07:24重新编辑 ]


献花 x0 回到顶端 [1 楼] From:台湾中华电信 | Posted:2005-11-29 07:18 |
devilchc 手机
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x18
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

感谢用心!及慷慨分享喔!


献花 x0 回到顶端 [2 楼] From:台湾 | Posted:2006-01-27 16:33 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.068605 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言