$name = "eko";
function chang_name(&$name){
$name .= '_after_change';
}
chang_name($name); //会改变原有参数$name
echo $name;
function test(array $arr){
for ($i=0; $i <count($arr) ; $i++) {
echo $arr[$i] .'</br>';
}
}
test('hello'); 报错
interface Animal {
function eat();
function sleep();
}
class Cat implements Animal{
public function eat(){
echo "cat eat fish";
}
public function sleep(){
echo "cat is sleeping";
}
}
function fn(Animal $animal){
echo $animal -> eat();
}
fn(new Cat());
function fn(){
$arg_nums = func_num_args(); //获得参数个数
echo "此时传入 $arg_nums 个参数";
echo "</br>";
$arr_args = func_get_args(); //获得所有参数,返回数组
echo gettype($arr_args) ."</br>"; //输出array
foreach ($arr_args as $arg) {
echo $arg."</br>";
}
$arg = func_get_arg(0); //获得第0个参数
echo $arr_arg;
}
fn('hello',123);
//在PHP5.6以上版本中,可以用拓展运算符代替可变参数
function fn(...$args){
echo "input ".count($args)." arguments";
echo '</br>';
for ($i=0; $i <count($args) ; $i++) {
echo $args[$i] .'</BR>';
}
}
fn('hello','word',123);
fn(...['hello','word',123]); //结果同上
//如果有多个参数,可变参数必须放在最后
function fn($name,...$args){
echo $name .'</br>';
for ($i=0; $i <count($args) ; $i++) {
echo $args[$i] .'</BR>';
}
}
fn('kitty','yellow','miao');
//php7 中支持函数返回值类型声明
function sum(...$args):int{
$sum = 0 ;
foreach ($args as $value) {
$sum += $value;
}
return $sum;
//return 'hello'; //报错,Return value of sum() must be of the type integer
}
echo sum(1,2,3,4,5);
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
//输出 helloWorld