Mutability ve PHP5 GET Değişkenler Referans

5 Cevap php

Ben bir sayfa, örneğin aşağıdaki var /mypage?myvar=oldvalue

$_SESSION['myvar'] = $_GET['myvar'];
$myvar = 'a_new_string'

Şimdi $_SESSION['myvar'] değerine sahiptir 'a_new_string'

Bu, tasarım gereğidir?

Nasıl kopyalayabilirsiniz value 'myvar' yerine ona bir referans den?

5 Cevap

Bu bir özellik değil bir hata :-) bulunuyor

neyse ki php.ini, set register_globals = off bunu kapatabilirsiniz

Ben register_globals ve kapalı olan bu test ettik ve onu yeniden olamaz. (Ben 5.2.6 olduğumu) PHP hangi sürümü kullanıyorsunuz.

Ben tasarım inanmıyorum, ama kesinlikle rahatsız edici olabilir.

Bu çalıştırdıktan sonra:

<?php
session_start(); 
$_GET['myvar'] = ''; 
$_SESSION['myvar'] = $_GET['myvar']; 
$myvar = 'a_new_string'; 
var_dump($_SESSION); 
?>

PHP 5.2.6 ben bu olsun:

array(1) { ["myvar"]=>  string(0) "" }

$ _GET ['Myvar'] bir dizi öğe $ myvar bir variable.there bu ikisi arasında hiçbir bağlantı yok olduğunu

($ _GET Bir süper küresel dizi)

consider the following example

$myarry=array('myvar'=>'myvalue');- here myvar is an item in the array variable $myarray $myvar='';-here myvar itself be a variable.