作者laechan (挥泪斩马云)
看板mud_sanc
标题[闲聊] LPC & php 语法对照
时间Thu Sep 6 10:06:40 2018
有自架 linux、且已安装 apache、yum 了 php 脚本相关档的,
php 脚本的档案基本上如下
#!/usr/bin/php -q
<?php
.
. <- 中间包着的就是程式内容
.
?>
php 脚本有着 php 语法的直译、大部份时候不需事先宣告变数
、以及可像 VB 执行档那样执行的好处,而且与 LPC 有很多共
通名称的函数,相当方便。
LPC php
==========================================================================
int x,y,z; 不用宣告,可直接使用 $x,$y,$z
string str,tmp; 不用宣告,可直接使用 $str,$tmp
mixed tmps; $tmps=null;
mixed tmps=({}); $tmps=array();
mixed tmps=({1,2,3}); $tmps=array(1,2,3);
mapping datas; $datas=array();
x=1; $x=1;
str="hi"; $str="hi";
tmps=({1,2,3}); $tmps=[1,2,3];
$tmps=array(1,2,3);
tmps=({"hello","world"}); $tmps=["hello","world"];
$tmps=array("hello","world");
datas=(["a":"abc","x":"xyz"]); $datas=(["a"=>"abc","x":"xyz"]);
$datas=array("a"=>"abc","x":"xyz");
x++; $x++;
str+="hey"; $str.="hey";
tmps+=({4}); $tmps[]=4;
datas["h"]="hij"; $datas["h"]="hij";
keys_data=keys(datas); $keys_data=array_keys($datas);
foreach(tmp in tmps) foreach($tmps as $tmp)
foreach(tmp1,tmp2 in datas) foreach($datas as $tmp1 => $tmp2)
原本以为没有这东西,感谢 typers
tmp=sprintf("%-s %3d",str,x); $tmp=sprintf("%-s %3d",$str,$x);
str=replace_string(str,"h","H"); $str=str_replace("h","H",$str);
比方 2..5 共取出长度4的子字串 2 5-2+1=4
tmp=str[a..b]; $tmp=substr($str,a,b-a+1);
tmp=str[a..strlen(tmp)-1]; $tmp=substr($str,a);
tmp=implode(tmps,","); $tmp=implode(",",$tmps);
tmps=explode(tmp,","); $tmps=explode(",",$tmp);
write(str+"\n"); echo($str."\n"); 或者
echo("$str\n");
write(identify(datas)); var_dump(datas);
$tmp=read_file("/file/a.txt"); $tmp=file_get_contents("/file/a.txt");
write_file("/file/a.txt",tmp); file_put_contents("/file/a.txt",$tmp);
if(undefinedp(tmps)) if(tmps==null)
if(undefinedp(datas["xxx"]) if(isset($datas["xxx"])==FALSE)
也有使用 empty() 的语法, 不过这个就够用了
if(!undefinedp(tmps)) if(is_array(tmps))
tmps=sort_array(tmps, asort(tmps);
(: sort_tmps :)); rsort(tmps);
ksort(tmps); 呼叫不同函数有不同的sort
.
.
tmp=tmps[0]; $tmp=$tmps[0];
tmp=tmps[0][1]; $tmp=$tmps[0][1];
tmp=datas["a"]; $tmp=$datas["a"];
tmp=datas["a"]["b"]; $tmp=$datas["a"]["b"];
==========================================================================
大概了解这些,读档进行字串拆解、资料分析与储存、然後再做格式化
输出就没啥问题,再怎样都能土法炼钢。
(所以我暂时只摸到这里而已,与资料库的连结部份暂时不碰)
php 的阵列其实广义来说都是 mapping,例如
$tmps=["a","b","c"];
它其实是
$tmps=[0=>"a",1=>"b",2=>"c"];
所以 $tmps[0]="a" 既合理且直觉
foreach($tmps as $tmp) 就相当於
foreach($tmps as $i => $tmp)
其中 $i 在这里就象徵着阵列索引值,就能替代 for(i=0;i<n;i++)
的传统用法,直接用 foreach 就能做大部份的处理。
而且它的阵列是 mixed mapping,也就是阵列索引值可同时并存数值
与字串。
读网页档时则必须进行转换,我的转换方式是
$fh= file_get_contents('
https://www.revivalworld.org/mud/taiwanmudlist');
$encode=mb_convert_encoding($fh,
'BIG5','UTF-8');
这个也是 try 出来的,它的意思是先对读回来的东西做 UTF-8 转换,
然後再对转换後的东西再做 BIG5 转换,有可能是 sanc 的主机所灌的
linux 版本的设定的缘故。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.117.106.224
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud_sanc/M.1536199604.A.38C.html
1F:推 typers : LPC mapping foreach 语法: foreach (k, v in data) 09/06 12:01
喔喔,这个赞。
※ 编辑: laechan (122.117.106.224), 09/07/2018 00:23:03
多补了一些东西,以後会陆续补充。
理论上,会写 php 的人,来 sanc coding 应该是没问题的。
※ 编辑: laechan (122.117.106.224), 09/07/2018 00:29:20
2F:推 typers : 其实程式语言的语法都差不多,倒是观念差异比较大 09/07 01:21
3F:→ typers : LPC在观念上其实比较接近javascript 09/07 01:29