recherche

Maison  >  Questions et réponses  >  le corps du texte

À propos du problème de passage de référence PHP

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

大家讲道理大家讲道理2808 Il y a quelques jours543

répondre à tous(3)je répondrai

  • 为情所困

    为情所困2017-05-18 10:47:59

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

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-18 10:47:59

    « 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;
        
    }
    

    répondre
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-18 10:47:59

    Attribuez simplement b=a directement. Dans php, les tableaux sans esperluette sont transmis par valeur, donc même si if contient < If code>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;🎜

    répondre
    0
  • Annulerrépondre