當前位置:首頁 » 編程語言 » php變數中引用變數

php變數中引用變數

發布時間: 2022-09-12 01:32:49

Ⅰ 詳解php變數傳值賦值和引用賦值變數銷毀

本文實例為大家分享了PHP變數傳值賦值和引用賦值變數銷毀的具體代碼,供大家參考,具體內容如下
<?php
$a
=
100;
$b
=
200;
var_mp($a,$b);
//int(100)
int(200)
?>
php中,上面的代碼,變數是怎麼存放的呢?
上面的代碼變動下,將變數b賦值給變數a,會發生什麼?
<?php
$a
=
100;
$b
=
200;
$a
=
$b;/*多了這個*/
var_mp($a,$b);
//int(200)
int(200)
?>
問題來了,$a
=
$b,那麼是將變數a的指針指向了變數b指針所指向的位置?還是變數a指向的位置的值變了?
引用賦值和上面傳值賦值不同,引用賦值是兩個變數指向一個地方,一旦這樣,一改俱改。
怎麼引用賦值呢?變數名前加&即可,
$a
=
&$b;
這樣賦予變數a的就不僅僅是變數b的值,而是變數b的地址,變數a和變數b共同指向一個地址。
<?php
$a
=
100;
$b
=
200;
$a
=
&$b;
var_mp($a,$b);
//int(200)
int(200)
/*變數b引用賦值給變數a後,ab指向同一個地址,將會一改俱改,如下:*/
$a
=500;
var_mp($a,$b);//int(500)
int(500)
一改俱改
$b
=
700;
var_mp($a,$b);//int(700)
int(700)
一改俱改
?>
<?php
/*理解下面的話*/
$a
=
100;
//變數a賦值int
100
,100是基礎數據類型,不是變數,是存在變數指向位置的
$a
=
$b;
//變數b的值
賦值
給變數a,變數a,b各有各的指向,執行之後,各是各的。
$a
=
&$b;
//變數b的值的地址
賦值給變數
a
,變數a,b共用一個地址哦!一改俱改!
?>
<?php
/*
php中unset()是用來銷毀變數的,但很多時候,unset()只把變數給銷毀了,
內存中存放的該變數的值仍然沒有銷毀,也就是沒能達到我們想要的釋放內存的效果。
這里可以用
變數=null
的方法來釋放其內存
unset也會釋放內存的情況
1.
在變數值所佔空間超過255位元組長的時候,unset(變數)才會釋放內存
2.
只有當指向該值的所有變數都被銷毀後,地址才會被釋放(比如$a,$b都指向該值,僅僅unset($a);是不釋放的,$b還是正常存在的)(也要執行1的判斷)
*/
$a
=
200;
$b
=
&$a;
unset($a);
var_mp($a,$b);
//NULL
int(100)
?>
上面的代碼,執行到unset($a)時候,就是將變數a的指向斷開,同時將變數a扔出花名冊,從下圖可以看出,對變數b是沒有影響的。
但是,如果用$a
=
null;這種方式銷毀變數時,將會有如下影響:
<?php
$a
=
100;
$b
=
&$a;
$a
=
null;
var_mp($a,$b);
//NULL
NULL
?>
這種方式,釋放了內存,但是共用一個地址的另一個變數也受到了影響。
看看這兩種方式在數組上的應用:
<?php
$aaa
=
array(
'a'=>1,
'b'=>2
);
unset($aaa['a']);
print_r($aaa);
//Array
(
[b]
=>
2
)
,用unset,數組中這一項不存在了
$bbb
=
array(
'a'=>1,
'b'=>2
);
$bbb['a']
=
null;
print_r($bbb);
//Array
(
[a]
=>
[b]
=>
2
)
,用
=
null,數組中這一項還存在,只是為空了
?>
以上所述是小編給大家介紹的PHP變數傳值賦值和引用賦值變數銷毀詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
您可能感興趣的文章:PHP生成短網址的思路以及實現方法的詳解PHP錯誤提示It
is
not
safe
to
rely
on
the
system……的解決方法PHP隨機數函數rand()與mt_rand()的講解php微信掃碼支付
php公眾號支付PHP實現支持CURL字元串證書傳輸的方法PHP使用OB緩存實現靜態化功能示例PHP使用mysqli同時執行多條sql查詢語句的實例PHP中命名空間的使用例子PHP
SESSION機制的理解與實例PHP自動載入類文件函數__autoload的使用方法

Ⅱ PHP中引用變數(指針)問題

因為$var2是$var1的引用,換句話說,這兩變數指向同一個地址。一個改變了,並一個變數也跟著改變了。

Ⅲ php 裡面的變數怎麼用到外面的變數

$posts = new WP_Query('post_type=any&posts_per_page=-1&post_status=publish');
$posts = $posts->posts;

header('Content-type:text/plain');
foreach($posts as $post) {
switch ($post->post_type) {
case 'revision':
case 'nav_menu_item':
break;
case 'page':
$permalink = get_page_link($post->ID);
break;
case 'post':
$permalink = get_permalink($post->ID);
break;
case 'attachment':
$permalink = get_attachment_link($post->ID);
break;
default:
$permalink = get_post_permalink($post->ID);
break;

}

//echo ${permalink};

//echo "$posts";

//echo "\n{$permalink}";
//print_r($permalink);
//echo "\n{$post->post_type}\t{$permalink}\t{$post->post_title}";

//var_mp( $GLOBALS);

$url= ${permalink};
$urls=$url;
//echo "\n{$urls}";
}

echo "\n{$urls}";
$urls=substr($urls,0,-1);
$urls = explode(",",$urls);

Ⅳ PHP為什麼一定要引用變數直接修改變數的值不就行了嗎

這個涉及到內存資源的問題,如果使用引用的話,$a和$b在內存中就是同一內存地址存儲,這樣可以減少內存的消耗。當然,從一個簡單的數字或許看不到什麼效果,但如果這個變數存儲的是上萬索引的數組或者對象,效果就很明顯了。不使用引用的話,$b就會一個$a的值存儲到內存中,就會多佔一部分內存……

Ⅳ php的class中怎樣引用外部的變數

把$a放在下面,

function name($string){

global $a;

}

$a="xxfaxy";

name("$a");

這樣就可以了。

Ⅵ php如何通過變數的變數引用外部變數

很不習慣PHP中的變數作用域,PHP中函數變數和全局是完全隔絕的,也就是無法相互訪問
比如下面這樣:

復制代碼代碼如下:

$test = 123;
abc(); //這里什麼都不輸出,因為訪問不到$test變數
function abc(){
echo($test);
}$test = 123;
abc(); //這里什麼都不輸出,因為訪問不到$test變數
function abc(){
echo($test);
}

如果,你想在函數內部訪問外部變數,你需要這樣:

復制代碼代碼如下:

$test = 123;
abc(); //輸出123
function abc(){
global $test;
echo($test);
}$test = 123;
abc(); //輸出123
function abc(){
global $test;
echo($test);
}
也就是說,你使用全局變數就可以在函數內調用外部定義過的變數

Ⅶ PHP如何在一個類中引用另一個類中的變數.

可能你理解上有問題。不太明白你的意思,所以我分開解釋。如果是在定義的時候就引用,下面兩種。1.兩個都是類,即類的靜態變數(static修飾),一個類自然可以引用靜態變數,因為靜態變數是在程序進入main函數前就已經初始化完了。2.一個類A一個實例B(A類產生的對象),A當然無法在類的內部引用(即定義中),因為實例是在程序中動態分配的內存,類A必然先於實例B存在,所以A並不能知道B的存在。B可以引用類A的靜態變數,理由同1。如果是在運行時才引用。你只要在類A里寫一個函數,例如function(B b),這樣你要調用的時候通過這個函數做介面就行了,至於b你要做什麼,就是你的事了。

Ⅷ 在php變數中引用變數,然後再進行賦值的方法

<?php
$t=array(1,2,3);
$s=55;
for($i=0;$i<count($t);$i++){
$n="new".$t[$i];
$$n=$s;
}
echo$new1,"<br/>";
echo$new2,"<br/>";
echo$new3,"<br/>";

以上你直接拷貝運行,檢驗一下是不是你要的效果。

補充

$t=array("typeid"=>array(10,21,38),'view'=>10);
for($i=0;$i<count($t["typeid"]);$i++){
$n="view".$t["typeid"][$i];
$$n=$t['view'];
}
echo$view10,"<br/>";
echo$view21,"<br/>";
echo$view38,"<br/>";

你要的效果需要連續用兩個$。

Ⅸ PHP變數的引用里的$b = $ $a;中的$和$a中間是否要空格

你這樣寫語法是錯誤的,$b你賦的是一個空的東西。
變數引用用的是&符
$a
=
1;
$b
=
2;
$b
=
&$a;
echo
$a;
//
輸出:1
echo
$b;
//
輸出:1
像你之前寫的
$a
=
1;
$b
=
2;
$b
=
$
$a;
echo
$a;
//
輸出:1
echo
$b;
//
輸出:是空
你可以用print輸出就可以看到了是有輸出的,但是輸出是空
echo
print
$b;
//列印出是1,說明有輸出但是輸出是空。
你吧3賦給$b之後$b是引用的$a,因為用的是引用其實你賦值給$b就相當於賦值給$a。

Ⅹ PHP如何在一個類中引用另一個類中的變數

a.php類中的變數需申請public $a=''; 然後b.php中就要包含a文件並$a=new a();然後$a->$a;就是a中的變數了。

熱點內容
巴法雲伺服器帶寬 發布:2025-01-12 13:15:26 瀏覽:676
搭建國外伺服器需要多少錢 發布:2025-01-12 13:08:01 瀏覽:827
我的世界mod伺服器開荒 發布:2025-01-12 13:07:10 瀏覽:757
sql優化書 發布:2025-01-12 13:07:09 瀏覽:455
高校網站伺服器搭建與維護論文 發布:2025-01-12 13:06:31 瀏覽:710
sqlserver實例沒有 發布:2025-01-12 12:57:18 瀏覽:252
代碼文件伺服器地址怎麼寫 發布:2025-01-12 12:50:47 瀏覽:759
java中方法與 發布:2025-01-12 12:50:13 瀏覽:655
如何快速查找c語言編譯時的錯 發布:2025-01-12 12:49:56 瀏覽:32
看門狗上傳病毒 發布:2025-01-12 12:32:54 瀏覽:326