我有一个数组,其中包含我使用带有 EXTR_PREFIX_ALL 标志集的 extract() 函数创建的局部变量。之后,我对由 extract() 创建的新前缀变量调用了 compact(),但使用 print_r() 显示从 compact() 创建的数组给出了一个空数组()。示例代码如下:

<?php
$cities = array('City1' => "Chicago", 'City2' => "Boston");

extract($cities, EXTR_PREFIX_ALL, "new");
echo "City 1: {$new_City1} City 2: {$new_City2}" . "<br><br>";

$new_cities = compact($new_City1, $new_City2);
print_r($new_cities);
?>

我使用的是 PHP 5.6 版。 我在这里做错了什么?

最佳答案

在您当前的代码中,您实际上提供了您尝试 compact 的每个变量的值,而不是变量的名称。它的行为就像一个可变变量行为。为了使其正常工作,您以字符串或数组形式提供变量名称:

$new_cities = compact(array('new_City1', 'new_City2'));
// or
$new_cities = compact('new_City1', 'new_City2');
这是 manual 的摘录:

关于PHP Compact() 函数返回一个空数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29873445/

10-09 03:23