Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回空数组的PHP Compact()函数_Php_Arrays - Fatal编程技术网

返回空数组的PHP Compact()函数

返回空数组的PHP Compact()函数,php,arrays,Php,Arrays,我有一个数组,其中包含我使用extract()函数创建的局部变量,该函数设置了EXTR_PREFIX_ALL标志。之后,我对extract()创建的新前缀变量调用了compact(),但使用print_r()显示从compact()创建的数组会得到一个空数组()。示例代码如下: <?php $cities = array('City1' => "Chicago", 'City2' => "Boston"); extract($cities, EXTR_PREFIX_ALL,

我有一个数组,其中包含我使用extract()函数创建的局部变量,该函数设置了EXTR_PREFIX_ALL标志。之后,我对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我做错了什么?

试试看

$new_cities = compact('new_City1', 'new_City2');
print_r($new_cities);

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

$new_cities = compact(array('new_City1', 'new_City2'));
// or
$new_cities = compact('new_City1', 'new_City2');
以下是该报告的摘录:

参数

varname1

compact()
接受数量可变的参数。每个参数可以是包含变量名的字符串,也可以是变量名的数组。数组中可以包含其他变量名数组<代码>压缩()以递归方式处理它