PHP如何处理2038年后的日期呢?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 2898 次浏览 • 2017-02-27 11:43 • 来自相关话题

PHP里有哪些常用的数组操作函数?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 3121 次浏览 • 2017-02-20 10:39 • 来自相关话题

PHP里有哪些常用的字符串操作函数?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 2691 次浏览 • 2017-02-20 10:33 • 来自相关话题

PHP如何解析一个URL地址?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 5026 次浏览 • 2017-02-15 10:14 • 来自相关话题

如何建立私有库?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 3949 次浏览 • 2017-02-07 11:06 • 来自相关话题

PHP 如何判断变量是否是时间戳格式?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 5305 次浏览 • 2017-01-23 12:05 • 来自相关话题

学习PHP开发,需要哪些工具软件?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 2994 次浏览 • 2017-01-17 14:59 • 来自相关话题

PHP函数:array_multisort()

zkbhj 发表了文章 • 0 个评论 • 1158 次浏览 • 2016-12-19 17:25 • 来自相关话题

PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。 
关联(string)键名保持不变,但数字键名会被重新索引,从 0 开始,并以 1 递增。 
输入数组被当成一个表的列并以行来排序——这类似于 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。——这句话是理解此函数用法的关键。

第一个参数必须是一个数组。接下来的每个参数可以是数组或者是下面列出的排序标志。

排序顺序标志: 
■SORT_ASC - 按照上升顺序排序 
■SORT_DESC - 按照下降顺序排序

排序类型标志: 
■SORT_REGULAR - 将项目按照通常方法比较 
■SORT_NUMERIC - 将项目按照数值比较 
■SORT_STRING - 将项目按照字符串比较

每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 - 在此之前为默认值 SORT_ASC 和 SORT_REGULAR。

看看两个实际例子:
1、一次对多个数组进行排序:
$num1 = array(3, 5, 4, 3);
$num2 = array(27, 50, 44, 78);
array_multisort($num1, SORT_ASC, $num2, SORT_DESC);

print_r($num1);
print_r($num2);
//result: Array ( [0] => 3 [1] => 3 [2] => 4 [3] => 5 ) Array ( [0] => 78 [1] => 27 [2] => 44 [3] => 50 )
2、对多维数组(以二位数组为例)进行排序:
$arr = array(
'0' => array(
'num1' => 3,
'num2' => 27
),

'1' => array(
'num1' => 5,
'num2' => 50
),

'2' => array(
'num1' => 4,
'num2' => 44
),

'3' => array(
'num1' => 3,
'num2' => 78
)
);

foreach ( $arr as $key => $row ){
$num1[$key] = $row ['num1'];
$num2[$key] = $row ['num2'];
}

array_multisort($num1, SORT_ASC, $num2, SORT_DESC, $arr);

print_r($arr);
//result:Array([0]=>Array([num1]=>3 [num2]=>78) [1]=>Array([num1]=>3 [num2]=>27) [2]=>Array([num1]=>4 [num2]=>44) [3]=>Array([num1]=>5 [num2]=>50)) 查看全部
PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。 
关联(string)键名保持不变,但数字键名会被重新索引,从 0 开始,并以 1 递增。 
输入数组被当成一个表的列并以行来排序——这类似于 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。——这句话是理解此函数用法的关键。

第一个参数必须是一个数组。接下来的每个参数可以是数组或者是下面列出的排序标志。

排序顺序标志: 
■SORT_ASC - 按照上升顺序排序 
■SORT_DESC - 按照下降顺序排序

排序类型标志: 
■SORT_REGULAR - 将项目按照通常方法比较 
■SORT_NUMERIC - 将项目按照数值比较 
■SORT_STRING - 将项目按照字符串比较

每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 - 在此之前为默认值 SORT_ASC 和 SORT_REGULAR。

看看两个实际例子:
1、一次对多个数组进行排序:
$num1 = array(3, 5, 4, 3);
$num2 = array(27, 50, 44, 78);
array_multisort($num1, SORT_ASC, $num2, SORT_DESC);

print_r($num1);
print_r($num2);
//result: Array ( [0] => 3 [1] => 3 [2] => 4 [3] => 5 ) Array ( [0] => 78 [1] => 27 [2] => 44 [3] => 50 )

2、对多维数组(以二位数组为例)进行排序:
$arr = array(
'0' => array(
'num1' => 3,
'num2' => 27
),

'1' => array(
'num1' => 5,
'num2' => 50
),

'2' => array(
'num1' => 4,
'num2' => 44
),

'3' => array(
'num1' => 3,
'num2' => 78
)
);

foreach ( $arr as $key => $row ){
$num1[$key] = $row ['num1'];
$num2[$key] = $row ['num2'];
}

array_multisort($num1, SORT_ASC, $num2, SORT_DESC, $arr);

print_r($arr);
//result:Array([0]=>Array([num1]=>3 [num2]=>78) [1]=>Array([num1]=>3 [num2]=>27) [2]=>Array([num1]=>4 [num2]=>44) [3]=>Array([num1]=>5 [num2]=>50))

PHP7 中我们应该学习会用的新特性

zkbhj 发表了文章 • 0 个评论 • 1239 次浏览 • 2016-12-16 11:00 • 来自相关话题

1.标量类型声明

我们知道PHP是一种弱类型的编程语言,因此没有提供任何方法来指定输入参数和返回值的类型,PHP7突破了这种现状,增加了对标量类型(int,float,string,bool)的声明支持,增加declare(strict_types=1)指令声明是否严格类型校验,我们来看一段代码:
declare(strict_types=1)
function add(int $x, int $y) : int
{
return $x + $y;
}
echo add(1, 2); //int(3)
有效的类型有:class/interface name、self、array,、callable、bool、float、int 和 string。
 
2. NULL合并运算符

PHP7中添加了NULL合并运算符,不要小看这个“??”,有了它我们就能很方便的获取一个参数,并能在其为空的情况下提供一个默认值。如何??运算符左侧值存在并且不为NULL,则返回左侧,否则将返回其右侧值。我们还是通过下面一段代码来体验一下??运算符的强大吧。
 <?php // 获取user参数的值(如果为空,则用'nobody')
// PHP5中我们这样来实现:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// PHP7中,使用??运算符更便捷:
$username = $_GET['user'] ?? 'nobody';
?>
 3.匿名类

顾名思义没有类名称,其声明和实例化是同时的,PHP7 支持通过 new class 来实例化一个匿名类,可以用来替代一些”用后即焚”的完整类定义。
 
echo (new class() {
public function myMethod() {
return "Hello!";
}
})->myMethod();
//Result: Hello!4. 更多Error错误可以进行异常处理

PHP7中更多的Error变为可捕获的Exception返回给开发者,如果不进行捕获则为Error,如果捕获就变为一个可在程序内处理的Exception。默认情况下,Error会直接导致程序中断,而PHP7则通过try / catch程序块捕获并且处理,让程序继续执行下去,为程序员提供更灵活的选择。

代码示例:
nonExistFunction($arg); // It will generate fatal error
 这时上面的代码会提示错误“Fatal error: Call to a member function method() on a non-object ”,并且这个致命错误会停止后面代码的继续执行。

所以如果你想继续执行代码,可以通过异常处理的方式解决:
 
try {
nonExistFunction($arg); //This method is not exists then it will be go to catch
} catch (EngineException $e ) {
echo "Exception: {$e->getMessage()}n";
}
 5.结合比较运算符 <=>

这个不多解释,我们直接看示例代码,通过代码你可以很容易了解该运算符的作用。
// PHP 7之前的写法:比较两个数的大小
function func ( $ a , $ b ) {
return ($a < $b) ? -1 : (($a > $b) ? 1 : 0)
}
// PHP新增的操作符 <=>
function func ( $ a , $ b ) {
return $a <=> $b;
}
 6.定义数组常量

过去我们在用 define() 定义常量时,数据类型只支持标量,但在 PHP7 中,支持定义数组类型的常量。
 
define('MYCONSTANT', array('a','b','c'));
 
  查看全部
1.标量类型声明

我们知道PHP是一种弱类型的编程语言,因此没有提供任何方法来指定输入参数和返回值的类型,PHP7突破了这种现状,增加了对标量类型(int,float,string,bool)的声明支持,增加declare(strict_types=1)指令声明是否严格类型校验,我们来看一段代码:
declare(strict_types=1)
function add(int $x, int $y) : int
{
return $x + $y;
}
echo add(1, 2); //int(3)

有效的类型有:class/interface name、self、array,、callable、bool、float、int 和 string。
 
2. NULL合并运算符

PHP7中添加了NULL合并运算符,不要小看这个“??”,有了它我们就能很方便的获取一个参数,并能在其为空的情况下提供一个默认值。如何??运算符左侧值存在并且不为NULL,则返回左侧,否则将返回其右侧值。我们还是通过下面一段代码来体验一下??运算符的强大吧。
 
<?php // 获取user参数的值(如果为空,则用'nobody')
// PHP5中我们这样来实现:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// PHP7中,使用??运算符更便捷:
$username = $_GET['user'] ?? 'nobody';
?>

 3.匿名类

顾名思义没有类名称,其声明和实例化是同时的,PHP7 支持通过 new class 来实例化一个匿名类,可以用来替代一些”用后即焚”的完整类定义。
 
echo (new class() {
public function myMethod() {
return "Hello!";
}
})->myMethod();
//Result: Hello!
4. 更多Error错误可以进行异常处理

PHP7中更多的Error变为可捕获的Exception返回给开发者,如果不进行捕获则为Error,如果捕获就变为一个可在程序内处理的Exception。默认情况下,Error会直接导致程序中断,而PHP7则通过try / catch程序块捕获并且处理,让程序继续执行下去,为程序员提供更灵活的选择。

代码示例:
nonExistFunction($arg); // It will generate fatal error

 这时上面的代码会提示错误“Fatal error: Call to a member function method() on a non-object ”,并且这个致命错误会停止后面代码的继续执行。

所以如果你想继续执行代码,可以通过异常处理的方式解决:
 
try {
nonExistFunction($arg); //This method is not exists then it will be go to catch
} catch (EngineException $e ) {
echo "Exception: {$e->getMessage()}n";
}

 5.结合比较运算符 <=>

这个不多解释,我们直接看示例代码,通过代码你可以很容易了解该运算符的作用。
// PHP 7之前的写法:比较两个数的大小
function func ( $ a , $ b ) {
return ($a < $b) ? -1 : (($a > $b) ? 1 : 0)
}
// PHP新增的操作符 <=>
function func ( $ a , $ b ) {
return $a <=> $b;
}

 6.定义数组常量

过去我们在用 define() 定义常量时,数据类型只支持标量,但在 PHP7 中,支持定义数组类型的常量。
 
define('MYCONSTANT', array('a','b','c'));

 
 

如何根据区间进行判断?

回复

zkbhj 回复了问题 • 1 人关注 • 1 个回复 • 4829 次浏览 • 2016-12-07 16:23 • 来自相关话题