PHP 函数的基本知识
PHP 函数的声明与调用
<?php
//函数声明
function compare(float $a, float $b):int{
return ($a >= $b)?1:0;
}
//函数调用
echo compare(10,5);
PHP 函数的类型
<?php
//1.自定义函数
function myName():string{
return 'simaqingshan';
}
echo '我的名字:'.myName().'<br>';
//2.系统函数
$my_name = 'simaqingshan';
echo '我的名字:'.strtoupper($my_name).'<br>';
//3.可变函数
$name = 'myName';
echo '我的名字:'.$name().'<br>';
//4.匿名函数
$my_name = function():string{
return 'simaqingshan';
};
echo '我的名字:'.$my_name().'<br>';
//5.匿名函数使用父作用域中的变量
$capital = true;
$my_name = function() use($capital):string{
return ($capital)?strtoupper('simaqingshan'):'simaqingshan';
};
echo '我的名字:'.$my_name().'<br>';
PHP 函数的返回值
<?php
//1.数据拼接成字符串
function simpleOperation1(float $op1, float $op2):string{
$op_add = $op1 + $op2;
$op_sub = $op1 - $op2;
$op_mul = $op1 * $op2;
$op_div = $op1 / $op2;
return '加:'.$op_add.' '.'减:'.$op_sub.' '.'乘:'.$op_mul.' '.'除:'.$op_div;
}
echo simpleOperation1(120,240).'<br>';
//2.数据形成数组
function simpleOperation2(float $op1, float $op2):array{
$op_add = $op1 + $op2;
$op_sub = $op1 - $op2;
$op_mul = $op1 * $op2;
$op_div = $op1 / $op2;
return ['addition'=>$op_add,'subtraction'=>$op_sub,'multiplication'=>$op_mul,'divsion'=>$op_div];
}
print_r(simpleOperation2(345,234));
echo '<br>';
//3.数据json化
function simpleOperation3(float $op1, float $op2):string{
$op_add = $op1 + $op2;
$op_sub = $op1 - $op2;
$op_mul = $op1 * $op2;
$op_div = $op1 / $op2;
return json_encode(['addition'=>$op_add,'subtraction'=>$op_sub,'multiplication'=>$op_mul,'divsion'=>$op_div]);
}
//直接输出json化的字符串
echo simpleOperation3(456,543);
echo '<br>';
//json数据解码成数组
$result_arr = json_decode(simpleOperation3(456,543));
print_r($result_arr);
echo '<br>';
//4.数据序列化
function simpleOperation4(float $op1, float $op2):string{
$op_add = $op1 + $op2;
$op_sub = $op1 - $op2;
$op_mul = $op1 * $op2;
$op_div = $op1 / $op2;
return serialize(['addition'=>$op_add,'subtraction'=>$op_sub,'multiplication'=>$op_mul,'divsion'=>$op_div]);
}
echo simpleOperation4(231,342);
echo '<br>';
$result_arr = unserialize(simpleOperation4(231,342));
print_r($result_arr);
echo '<br>';
PHP 函数的参数
<?php
//1.默认方式 值参数
function opposition1(bool $flag):bool{
//对$flag进行反转
return $flag = $flag?false:true;
}
var_dump(opposition1(true));
echo '<hr>';
//2.引用参数 会改变被引用的参数的值
function opposition2(bool &$flag):bool{
return $flag = $flag?false:true;
}
$bool_flag = false;
var_dump($bool_flag);
var_dump(opposition2($bool_flag));
var_dump($bool_flag);
echo '<hr>';
//3.默认参数
//函数在调用时部分参数可以不填 使用函数声明时的默认参数
function opposition3(bool $flag, bool $enable=true):bool{
//当$enable为true时对$flag进行反转
return $flag = ($enable?($flag?false:true):$flag);
}
var_dump(opposition3(false,false));
//使用默认参数 可以少写一个参数
var_dump(opposition3(false));
echo '<hr>';
//4.剩余参数
//应用在函数声明中使用...进行收集参数
function opposition4(...$flags):array{
$result = [];
foreach($flags as $value){
$result[] = $value?false:true;
}
return $result;
}
var_dump(opposition4(1,0,1,0));
//应用在函数调用中使用...进行参数展开
$flag_arr = [1,1,1,0,0,0];
echo '<hr>';
var_dump(opposition4(...$flag_arr));
PHP 函数的命名空间
<?php
namespace ns1{
function myName(){
return 'simaqingshan';
}
}
namespace ns2{
function myName(){
return 'SIMAQINGSHAN';
}
}
//定义全局空间:匿名空间
namespace {
echo \ns1\myName().'<hr>';
echo \ns2\myName().'<hr>';
}