在php中extract()函数和Associateve数组之间有什么区别?

在php中extract()函数和Associateve数组之间有什么区别?,php,arrays,variables,extract,Php,Arrays,Variables,Extract,我想知道php中extract()函数和associative array()函数的区别是什么。我在哪里用这个 $state = array("AS"=>"ASSAM", "OR"=>"ORRISA", "KR"=>"KERELA"); extract($state); echo"\$AS is $AS <br/>\n\$KR is $KR <br/>\n\$OR is $OR <br/>"; $state=array(“AS”=>“A

我想知道php中extract()函数和associative array()函数的区别是什么。我在哪里用这个

$state = array("AS"=>"ASSAM", "OR"=>"ORRISA", "KR"=>"KERELA"); 
extract($state); 
echo"\$AS is $AS <br/>\n\$KR is $KR <br/>\n\$OR is $OR <br/>";
$state=array(“AS”=>“ASSAM”、“OR”=>“ORRISA”、“KR”=>“KERELA”);
摘录(国家);
echo“\$AS is$AS
\n\$KR is$KR
\n\$OR is$OR
”;

如果我正在编写echo
“$state[AS]”,则不使用此行然后我得到相同的结果,但有什么区别

通常我会说不要使用提取物。
通常最好将所有值都保留在数组中,因为可以循环数组

对于变量,您不知道提取时创建了多少。数组中只有一个值还是50?
如果它在数组中,您可以对它们进行计数和循环,在变量中,您需要测试是否设置了每个变量

如果您运气不好,使用extract也会覆盖您的变量

// Some calculations result in a price
$price = 500;

// Now you get an array from user input or json and extract it
$array = ["something" => "here", "price" => 10];
extract($array);

// Extracting overwrites your $price with value 10!
echo $price; // 10
假设我们再次使用上述场景,但没有摘录

// Some calculations result in a price
$price = 500;

// Now you get an array from user input or json
$array = ["something" => "here", "price" => 10];


echo $price; // 500
echo $array['price']; // 10
现在我们有了数组值和您的值。
由于我们可以控制这些值的去向,因此不会有任何妥协。
但一旦你使用extract,你就真的释放了一切,只能寄希望于最好的结果

TL/DR


不要使用提取物。如果您确实需要/想要使用它,那么只在您自己的阵列上使用extract,您可以100%控制它。

o.o什么。。没有关联数组函数。。只需要简单的数组。无论是数字索引还是标签,都定义了数组的类型。可以对数组调用提取函数(关联数组将设置一个变量,其中索引作为名称,元素的值作为数组的值)。使用
extract()
可能不是一个好的做法。你说的“我在哪里使用这个”是什么意思?“这”到底是什么?