PHP type - extract ()

PHP extract()function can take one of several extract_types. But what is the difference between extr_prefix_sameand extr_prefix_if_exists? In this manual it sounds like this: in any case, the new variables will have a prefix if the variable name already exists.

Thanks!

+3
source share
3 answers

When used EXTR_PREFIX_IF_EXISTS, if the variable does not exist yet, the prefix version will not be created either. In this example:

function test() {
    $a = 12345;

    extract(array('a' => 1, 'b' => 2, 'c' => 3), EXTR_PREFIX_IF_EXISTS, 'my_');

    var_export(get_defined_vars());
}
test();

$my_band $my_cnot created, because $band $cdo not exist.

+3
source

EXTR_PREFIX_SAME will extract all variables and only prefix ones that exist in the current area.

EXTR_PREFIX_IF_EXISTS , , .

, :

$foo = 'foo';
$bar = 'bar';

extract(array('foo' => 'moo', 'bar' => 'mar', 'baz' => 'maz'), EXTR_PREFIX_IF_EXISTS, 'prefix');

isset($prefix_foo); // true
isset($prefix_baz); // false
isset($baz); // false

....

$foo = 'foo';
$bar = 'bar';

extract(array('foo' => 'moo', 'bar' => 'mar', 'baz' => 'maz'), EXTR_PREFIX_SAME, 'prefix');

isset($prefix_foo); // true
isset($prefix_baz); // false
isset($baz); // true
+2

EXTR_PREFIX_SAME , , .

, EXTR_PREFIX_IF_EXISTS, , EXTR_IF_EXISTS ( , ), .

$array = Array();
$array['foo'] = 'foo';
$array['bar'] = 'bar';
$array['baz'] = 'baz';  

$foo = 'local foo';
$bar = 'local bar';

extract($array, EXTR_PREFIX_SAME, 'pre');

print_r(get_defined_vars());

//partial output    
//Array
//(
//  [array] => Array
//      (
//          [foo] => foo
//          [bar] => bar
//          [baz] => baz
//      )
//
//  [foo] => local foo
//  [bar] => local bar
//  [pre_foo] => foo
//  [pre_bar] => bar
//  [baz] => baz
//) 

, EXTR_PREFIX_SAME $foo $bar , ($ pre_foo, $pre_bar $baz). , EXTR_PREFIX_IF_EXISTS

$array = Array();
$array['foo'] = 'foo';
$array['bar'] = 'bar';
$array['baz'] = 'baz';  

$foo = 'local foo';
$bar = 'local bar';

extract($array, EXTR_PREFIX_IF_EXISTS, 'pre');

print_r(get_defined_vars());

//partial output    
//Array
//(
//  [array] => Array
//      (
//          [foo] => foo
//          [bar] => bar
//          [baz] => baz
//      )
//
//  [foo] => local foo
//  [bar] => local bar
//  [pre_foo] => foo
//  [pre_bar] => bar
//)     

$foo $bar , . $baz , , EXTR_PREFIX_IF_EXISTS PHP "baz" .

+1

Source: https://habr.com/ru/post/1713021/


All Articles