PHP 有啥新鲜之处?与 Java 的浅层相比

tags: 编程 Java PHP

说到数组,还确实避不了数组排序

在Java中提供了Arrays.sort()的多多重载方法,用于数组的排序。

int[] ranks = new int[]{2,9,1,5,7};
//使用默认的比较器,进行升序排序
Arrays.sort(ranks); //为 "[1, 2, 5, 7, 9]"
//自定义比较器,进行降序排序
Integer[] ranks = new Integer[]{2,9,1,5,7};
Arrays.sort(ranks, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2-o1;
    }
});// 为 "[9, 7, 5, 2, 1]"

在PHP中没那么麻烦,当然定制性没那么好。

$ranks = array(
    2,9,1,5,7
);
sort($ranks); //按值升序排序
rsort($ranks); //r表示reverse,相反的意思。按值降序排序
asort($ranks); //a表示association,键值联系的意思。保持键值关系升序排序
arsort(); //保持键值关系降序排序
ksort($ranks); //k表示key,按键升序排序
krsort(); //按键降序排序

说到数组就不得不谈谈遍历

遍历可以使用for循环,也足以使用foreach循环。for循环跟Java中的差不离,不谈,如故谈谈foreach循环有趣。在Java中的foreach循环是如此的:

int[] arr = new int[]{1,2,3};
for(int item:arr){//":"前面是数组中元素的类型和临时变量,后面的是数组
    System.out.println(item);
}

而在PHP中是那样的:

$arr = array(
    1,2,3
);
//第一种
foreach($arr as $value){//as前面是数组,后面是数组中元素的临时变量。
    echo "$value<br/>";
}
//第二种
foreach($arr as $key=>$value){//同上,不过同时保存了键值。
    echo "$key = $value<br/>";
}

简单了许多有木有?网络时期讲究的精简高效,不浪费带宽,PHP就是那样。

再说一些表单的

当使用表单提交多选的值时,要注意name属性的值后边要带”[]”,不然PHP中接收的是单个值而不是多少个数组。如:

client.html

<form action="server.php" method= "POST">
    <input type="checkbox" name="city[]" value="gz" />广州
    <input type="checkbox" name="city[]" value="bj"/>北京
    <input type="checkbox" name="city[]" value="sz"/>深圳
    <input name="submit" type = "submit" value="提交"/>
</form>

server.php

<?php
if(isset($_POST['city'])){ //判断变量是否有值
    $citys = $_POST['city'];
    echo '['.implode(',',$citys).']'; 
}
?>

正文标题: <a
href=”http://itxiehui.github.io/2016/04/03/PHP-%E6%9C%89%E4%BB%80%E4%B9%88%E7%89%B9%E6%AE%8A%E4%B9%8B%E5%A4%84%EF%BC%9F%E4%B8%8E-Java-%E7%9A%84%E6%B5%85%E5%B1%82%E6%AF%94%E8%BE%83/"&gt;PHP
有哪些出格之处?与 Java 的浅层比较</a>
文章笔者:
IT社团知识库
许可协议: ©署名-非商用-相同格局共享
4.0

图片 1

文化共享许可协商

记得在PHP中有那样的出口语句
echo "$name is me.",假使尚未日元符,PHP又怎么辨别$name是多个变量呢?

PHP中的变量以$标记开始,即便是全局变量则是以$_始于并且都大写,如$_REQUEST。在Java中变量能够是字母(a-z)、下划线(-)可能美金符号($)起首,并且变量必须先有档次注明,如int i = 0,随后才能利用。然则PHP却并非,它的门类完全由赋值分明。你给它如何,它就是什么。那怎么要强制行使比索符开端呢?

议论字符串和数组的倒车

在Java中校字符串切割成数组,最简便的是这么:

String str = "1-2-3";
String[] arr = str.splite("-");

而在PHP中提供了explode函数:

$str = "1-2-3"; 
$arr = explode("-",$str);

在Java准将数组转成字符串

String str2 = Arrays.toString(arr);//是"[1, 2, 3]"
//或者要自定输出格式的话
StringBuilder sb = new StringBuilder();
for(int i=0;i<arr.length;i++){
    sb.append(arr[i]);
    if(i!=arr.length-1){
        sb.append("-");
    }
}
String str3 = sb.toString();//是"1-2-3"

而在PHP中没那么费力,直接用implode函数就够了。

$str2 = '['.implode(",",$arr).']'; //是"[1, 2, 3]"
$str3 = implode("-",$arr); //是"1-2-3"

全总变得那般简单,世界一下子就好了。

再议论数组。

在Java中我们因而int[] arr = new int[]{1,2,3};来创制一个数组,而在PHP中确实用array()函数来创建的。而且PHP中的数组还有键值对的概念,那不是跟Java中的Map很像吗?你可以不内定键,它会暗许从0开始作为索引键;你也足以运用=>来钦赐键。如下:

$arr = array( 
    "1"=>"Google",
    "3"=>"Microsoft",
    "2"=>"Apple"
);

讲到输出语句,就不得单双引号在PHP中分裂。

在Java中,我们运用输出语句平常是System.out.println();括号里可以是随意基本项目+String。而在PHP中输出语句更增加,有echo,print,print_r还有var_dump。以echo为例,假定$name = 'Lshare';。对于echo '$name is me.',PHP将不会对单引号里面的字符串进行解析,而是直接出口$name is me.;对于echo "$name is me.",PHP对双引号里的字符串举行剖析,输出Lshare is me.。双引号的代价是作用上比单引号差,但可读性好。为了提升品质,你只怕这么使用
echo $name.' is me.'echo $name,' is me.',显明可读性会差了一点,不过性能上比用双引号好,因为不用去解析引号内的字符串了。

诙谐的是echoprint她俩并不是函数,而是语言结构,就恍如ifelse那么。你既可以动用()来输出单个参数,也足以应用''""输出两个参数,中间用,隔开,如上文中的echo $name,' is me.'。那就是它的语法,就像你学习if...else...一律,懂了那些才足以任意而不逾矩。

初学者或者会对那样的口舌感到迷惑不解echo '<br/>',认为浏览器应该平素出口<br/>,因为单引号内,PHP是不会展开解析的。哈,PHP是不解析,不过浏览器解析啊。回顾一下,浏览器不就是收取Html类型的数量,然后解析显示给用户吗?PHP把<br/>给了浏览器,然后浏览器解析成换行,难道有哪些不对吧?

相关文章