Return to bug29493.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / array |
1.1 misho 1: --TEST-- 2: Bug #29493 (extract(EXTR_REFS) fails if array has multiple referrals) 3: --FILE-- 4: <?php 5: function t1() 6: { 7: $a = array('foo' => 'aaa'); 8: // refcount($a) = 1 9: // refcount($a['foo']) = 1 10: $b = $a; 11: // refcount($a) = 2 12: // refcount($a['foo']) = 1 13: $b['foo'] = 'bbb'; 14: // refcount($a) = 1 15: // refcount($a['foo']) = 1 16: 17: var_dump($a, $b); 18: 19: extract($a, EXTR_REFS); 20: 21: $foo = 'noo'; 22: 23: var_dump($a, $b); 24: } 25: 26: function t2() 27: { 28: $a = array('foo' => 'aaa'); 29: // refcount($a) = 1 30: // refcount($a['foo']) = 1 31: $b = &$a; 32: // refcount($a) = 2 33: // is_ref($a) = true 34: // refcount($a['foo']) = 1 35: $b['foo'] = 'bbb'; 36: // refcount($a) = 2 37: // refcount($a['foo']) = 1 38: 39: var_dump($a, $b); 40: 41: extract($a, EXTR_REFS); 42: 43: $foo = 'noo'; 44: 45: var_dump($a, $b); 46: } 47: 48: function t3() 49: { 50: $a = array('foo' => 'aaa'); 51: // refcount($a) = 1 52: // refcount($a['foo']) = 1 53: $b = &$a; 54: // refcount($a) = 2 55: // is_ref($a) = true 56: // refcount($a['foo']) = 1 57: unset($b); 58: // refcount($a) = 1 59: // is_ref($a) = true 60: // refcount($a['foo']) = 1 61: 62: var_dump($a); 63: 64: extract($a, EXTR_REFS); 65: 66: $foo = 'noo'; 67: 68: var_dump($a); 69: } 70: 71: t1(); 72: t2(); 73: t3(); 74: ?> 75: --EXPECT-- 76: array(1) { 77: ["foo"]=> 78: string(3) "aaa" 79: } 80: array(1) { 81: ["foo"]=> 82: string(3) "bbb" 83: } 84: array(1) { 85: ["foo"]=> 86: &string(3) "noo" 87: } 88: array(1) { 89: ["foo"]=> 90: string(3) "bbb" 91: } 92: array(1) { 93: ["foo"]=> 94: string(3) "bbb" 95: } 96: array(1) { 97: ["foo"]=> 98: string(3) "bbb" 99: } 100: array(1) { 101: ["foo"]=> 102: &string(3) "noo" 103: } 104: array(1) { 105: ["foo"]=> 106: &string(3) "noo" 107: } 108: array(1) { 109: ["foo"]=> 110: string(3) "aaa" 111: } 112: array(1) { 113: ["foo"]=> 114: &string(3) "noo" 115: }