$another_array = array();
$array = array(5 => 1, 12 => 2);
make_another_array($array);
print_r($another_array);
function make_another_array(array $array) {
foreach ($array as $key=>$value) {
$another_array[$key] = $value;
}
}
我在函数内添加$another_array
的值,但是当我在调用函数后打印$another_array
时,它给出一个空白数组。
为什么会这样?如何正确地分配值给$another_array
和打印外面的功能在这里,使其不是空白?
您没有捕获或返回数据:
function make_another_array(array $array) {
foreach ($array as $key=>$value) {
$another_array[$key] = $value;
}
return $another_array; // return here
}
$array = array(5 => 1, 12 => 2);
$another_array = make_another_array($array); // capture the returned value
print_r($another_array);
其次,你可能想用这个代替:
$another_array = array_values($array);
如下面的注释所示,有一个通过引用传递的方法:
function update_array(array &$array) {
$array[3] = 12;
}
update_array($array);
print_r($array);
最后,不是首选的方法…
function update_array(array $a) {
global $another_array;
foreach($a as $key => $value){
$another_array[$key] => $value;
}
}
// or just array_merge
// $array = array_merge($array, $another_array);
你必须返回函数内部的another_array:函数内部声明的变量是局部的,函数外部声明的变量是不可访问的。
$array = array(5 => 1, 12 => 2);
$another_array = make_another_array($array);
print_r($another_array);
function make_another_array(array $array) {
$another_array = array();
foreach ($array as $key=>$value) {
$another_array[$key] = $value;
}
return $another_array;
}
或者,您也可以通过引用传递另一个数组:
$another_array = array();
$array = array(5 => 1, 12 => 2);
make_another_array($array, $another_array);
print_r($another_array);
function make_another_array(array $array, &$another_array) {
foreach ($array as $key=>$value) {
$another_array[$key] = $value;
}
}
或者,您可以使用global关键字在函数内部设置它们(但我建议使用其他两种解决方案):
$another_array = array();
$array = array(5 => 1, 12 => 2);
make_another_array($array);
print_r($another_array);
function make_another_array(array $array) {
global $another_array;
foreach ($array as $key=>$value) {
$another_array[$key] = $value;
}
}
,最后你可以使用超全局变量$GLOBALS,它可以在所有作用域中访问。(这与上面的解决方案非常相同)
$another_array = array();
$array = array(5 => 1, 12 => 2);
make_another_array($array);
print_r($another_array);
function make_another_array(array $array) {
foreach ($array as $key=>$value) {
$GLOBALS['another_array'][$key] = $value;
}
}
您可以像下面这样通过引用传递它:
<?php
$another_array = array();
$array = array(5 => 1, 12 => 2);
function make_another_array($array, &$another_array) {
foreach ($array as $key=>$value) {
$another_array[$key] = $value;
}
return $another_array;
}
make_another_array($array, $another_array);
print_r($another_array);
http://ideone.com/mAAeTp 确保有一个引用$another_array作为全局指向函数外的一个,否则它只是局部的。
全球another_array美元;//把它放在make_another_array(函数的开头。
$another_array = array();
$array = array(5 => 1, 12 => 2);
make_another_array($array);
print_r($another_array);
function make_another_array(array $array)
{
global $another_array;
foreach ($array as $key=>$value){
$another_array[$key] = $value;
}
}