當前位置:首頁 » 編程語言 » phpargs

phpargs

發布時間: 2022-06-23 22:49:28

『壹』 php為什麼不支持函數重載啊

php 作為一種弱類型語言,本身不能像強類型如java ,c++那樣,直接的實現重載。不過可以通過一些方法,間接的實現重載。
使用一個統一的函數來實現重載。該方法要使用func_get_args()和func_num_args()方法。
<?php

function test1($name){
echo $name;
}

function test2($name,$age){
echo $name.$age;
}

function load(){
//返回輸入的元素數目
$num=func_num_args();
//返回輸入元素列表的數組形式
$arr=func_get_args();

if($num==1){
test1($arr[0]);
}else {
test2($arr[0],$arr[1]);
}
}

load("a");
echo "<br/>";
load("a","b");
?>

2.當對象試著調用不存在或者受許可權限制的方法時,__call()方法會被自動調用,從而可以實現類型重載的效果。該方法是php5新增的方法。
<?php
class A{
//name :調用的方法名字。args:參數列表
function __call($name,$args){
$num=count($args);
if($num==1){
$this->test1($args[0]);
}
else {
$this->test2($args[0],$args[1]);
}
}

function test1($name){
echo $name;
}
function test2($name, $age){
echo $name." ".$age;
}
}

$a=new A();
$a->a("a");
echo "<br/>";
$a->a("a","b");

?>

『貳』 PHP改變傳入參數的值

function add (&$a){
$a++;
}
$a=1;
add($a);
echo $a; // 這里就等於2 至於怎麼組合使用你自己看著辦

『叄』 php中,為什麼有時候是$this->args,有時候是$this->$args.

$this->args 直接調用類的變數

$this->$args 先獲取$args的值,再根據值獲取類對應的變一。

比如$args=『abc』,同最終是$this->abc

相當於另外一種用法 $$abc

『肆』 php 到底可不可以重載

php 作為一種弱類型語言,本身不能像強類型如java ,c++那樣,直接的實現重載。不過可以通過一些方法,間接的實現重載。

  1. 使用一個統一的函數來實現重載。該方法要使用func_get_args()和func_num_args()方法。

<?php

functiontest1($name){
echo$name;
}

functiontest2($name,$age){
echo$name.$age;
}

functionload(){
//返回輸入的元素數目
$num=func_num_args();
//返回輸入元素列表的數組形式
$arr=func_get_args();

if($num==1){
test1($arr[0]);
}else{
test2($arr[0],$arr[1]);
}
}

load("a");
echo"<br/>";
load("a","b");
?>


2.當對象試著調用不存在或者受許可權限制的方法時,__call()方法會被自動調用,從而可以實現類型重載的效果。該方法是php5新增的方法。

<?php
classA{
//name:調用的方法名字。args:參數列表
function__call($name,$args){
$num=count($args);
if($num==1){
$this->test1($args[0]);
}
else{
$this->test2($args[0],$args[1]);
}
}

functiontest1($name){
echo$name;
}
functiontest2($name,$age){
echo$name."".$age;
}
}

$a=newA();
$a->a("a");
echo"<br/>";
$a->a("a","b");

?>

『伍』 PHP wordpress中如何根據cat分類變數, 給$args加上這個分類的指向url超鏈接

wordpress里的query_posts返回的是一個數組,是根據傳入的參數查詢到的文章列表。對於數組,你直接輸出(echo)操作肯定是會有問題。


一般的使用方式:你用這個函數執行一次查詢,找到你需要的文章(列表),然後遍歷這個文章(列表),比如生成一個文章列表。


query_posts($args);//查詢
//遍歷
while(have_posts()){//如果當前文章列表還有文章
the_post();//取出文章並設置為當前文章對象
echoget_the_title();//輸出文章的標題
//其它,比如文章鏈接、日期等等,都是可以通過函數獲取到
}

『陸』 PHP 函數call_user_func和call_user_func_array用法詳解

下面來和大家分享一下這個call_user_func_array和call_user_func函數的用法,另外附贈func_get_args()函數和func_num_args()函數,嘿嘿!!
call_user_func函數是當需要動態調用函數時,才使用的,這個函數有兩種用法:
第一種是調用孤獨的函數:

代碼如下:<?php
function
funa($b,$c)
{

echo
$b;

echo
$c;
}
call_user_func('funa',
"111","222");
call_user_func('funa',
"333","444");
//顯示
111
222
333
444
//大家有沒有發現,這個用法有點像javascript中的call方法,嘿嘿
?>
第二種是調用類內部的函數:
代碼如下:<?php
class
a
{

function
b()

{

$args
=
func_get_args();

$num
=
func_num_args();

print_r($args);

echo
$num;

}
}
call_user_func(array("a",
"b"),"111","222");
?>
上面這個例子,自己運行一下看看結果是什麼吧~嘿嘿~提示一下func_get_args()函數是獲取傳入到函數中的參數,返回一個數組,func_num_args()函數獲取傳入函數中的參數的個數。

下面再來看看call_user_func_array函數
這個函數也是當需要動態調用函數時用到的,它的用法和call_user_func函數比較像,只是參數傳入的是數組。

代碼如下:<?php
function
a($b,
$c)
{

echo
$b;

echo
$c;
}
call_user_func_array('a',
array("111",
"222"));
//顯示
111
222
?>

call_user_func_array函數也可以調用類內部的方法的
代碼如下:<?php
Class
ClassA
{

function
bc($b,
$c)
{

$bc
=
$b
+
$c;

echo
$bc;

}

}
call_user_func_array(array(‘ClassA','bc'),
array(“111″,
“222″));
//顯示
333
?>

下面再看一個動態調用函數的例子:
代碼如下:<?php
function
otest1
($a)
{

echo(
'一個參數'
);
}

function
otest2
(
$a,
$b)
{

echo(
'二個參數'
);
}

function
otest3
(
$a
,$b,$c)
{

echo(
'三個啦'
);
}

function
otest
(){

$args
=
func_get_args();

$num
=
func_num_args();

call_user_func_array(
'otest'.$num,
$args
);
}
otest("11");
otest("11","22");
otest("11","22","33");
?>

『柒』 PHP定義一個不固定參數的函數的意義是什麼呢能做些什麼事情呢

func_get_args是獲取方法中參數的數組,返回的是一個數組,與func_num_args搭配使用;
func_num_args一般寫在方法中,用於計數;
使用方法如下:
function
foo($a='gg',$b='kk'){
$numargs =
func_num_args();
echo "Number of arguments:
$numargs<br />\n";
if ($numargs >= 2)
{
echo "Second argument is:
" . func_get_arg(1) . "<br />\n";

}
$arg_list = func_get_args();

for ($i = 0; $i < $numargs; $i++)
{
echo "Argument $i is: " .
$arg_list[$i] . "<br />\n";

}
}

foo(1, 2);=》輸出內容為:
Number of arguments: 2
Second argument
is: 2
Argument 0 is: 1
Argument 1 is: 2

一般不常用

『捌』 PHP 遞歸處理數組,並組合成新的數組

/**
*多維數組遞歸合並
*/
functionmultimerge(){
$arrs=func_get_args();
$merged=array();
while($arrs){
$array=array_shift($arrs);
if(!$array){
continue;
}
foreach($arrayas$key=>$value){
if(is_string($key)){
if(is_array($value)&&array_key_exists($key,$merged)&&is_array($merged[$key])){
$merged[$key]=call_user_func(__FUNCTION__,$merged[$key],$value);
}else{
$merged[$key]=$value;
}
}else{
$merged[]=$value;
}
}
}
return$merged;
}

$a1=array('user'=>array('name'=>'tony','score'=>23));
$a2=array('user'=>array('name'=>'tony','score'=>255),'name'=>'tom');
$a3=array('user'=>array('name'=>'tony','score'=>288,'test'=>'abc'),'name'=>'jack');
$result=multimerge($a1,$a2,$a3);
var_mp($result);

熱點內容
資料庫的欄位命名規則 發布:2025-02-05 13:53:16 瀏覽:683
固定ip自建伺服器訪問 發布:2025-02-05 13:53:03 瀏覽:740
快速獲取文件夾沒文件 發布:2025-02-05 13:52:19 瀏覽:871
伺服器主機如何家用 發布:2025-02-05 13:52:15 瀏覽:99
安卓應用如何刪除自動下載 發布:2025-02-05 13:52:15 瀏覽:660
c語言switch語句用法 發布:2025-02-05 13:49:16 瀏覽:936
騰訊緩存不了的動畫片怎麼辦 發布:2025-02-05 13:49:12 瀏覽:130
access資料庫調用 發布:2025-02-05 13:45:01 瀏覽:49
如何查詢伺服器所有電腦名 發布:2025-02-05 13:21:38 瀏覽:150
我的世界ec伺服器up主稱號怎麼獲得 發布:2025-02-05 13:21:15 瀏覽:913