À propos du problème de passage de référence PHP
大家讲道理
大家讲道理 2017-05-18 10:45:59
0
3
525

Un tableau a lui-même est référencé par d'autres tableaux. Maintenant, je veux attribuer le tableau a au tableau b dans un jugement if Mais je ne veux pas attribuer la référence dans a à b. Ceci Comment faire ? Parce que nous voulons seulement changer la valeur de b dans le if, nous jugeons que la valeur de a à l'extérieur ne peut pas être modifiée

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(3)
为情所困

Écrivez un exemple, la description du texte semble un peu alambiquée

曾经蜡笔没有小新

« Attribuez le tableau a au tableau b dans un jugement if », attribuez-vous le tableau a au tableau b, ou le tableau b au tableau a ?

<?php
$a = &$c;
$d = $a;

Attribuer le tableau a au tableau b

if(condition)
{
    $b = $d;
}

Attribuer le tableau b au tableau a

if(condition)
{
    $a = $b;
    
}
过去多啦不再A梦

Attribuez simplement b=a directement. Dans php, les tableaux sans esperluette sont transmis par valeur, donc même si if contient b. change, cela n'affectera pas la valeur de ab=a就好了,在php中数组不加&符号都是值传递,所以if里面就算b变化了,也不会影响a的值

不会跟着变,因为a是被引用赋值,这没问题,但是只要a对b是值传递,他们就不会存在引用关系,你没上代码,我根据你的需求试着模拟了一个比较简单的场景,你可以自己试着运行下:

<?php                                                                                                                                                                       
define('CLI_SCRIPT', true);                                                                                                                                                 
                                                                                                                                                                            
$data = array(1, 2, 3, 4);                                                                                                                                                  
foreach ($data as &$tmp) {                                                                                                                                                  
    $a = $tmp;                                                                                                                                                              
    if (in_array($a, [1, 2])) {                                                                                                                                             
        $b = $a;                                                                                                                                                            
        $b = $b - 1;                                                                                                                                                        
        var_dump($a);                                                                                                                                                       
        var_dump($b);                                                                                                                                                       
    }                                                                                                                                                                       
} 

你在$b=$a之前加一句unset($val)

Cela ne changera pas, car a est attribué par référence, ce qui ne pose pas de problème, mais tant que a et b sont passés par valeur, ils n'auront pas de relation de référence. Vous n'avez pas lu le code que j'ai essayé. simulez une comparaison en fonction de vos besoins. Scénario simple, vous pouvez essayer de l'exécuter vous-même : 🎜 rrreee 🎜Ajoutez simplement unset($val) avant $b=$a;🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal