我试图使用php将键值对添加到数组中。
当我回显数组时,我得到值
echo "Key = " . $key . "| Value = " . $value;
Key = area_id| Value = 4000001Key = area_title| Value = Region
一切都很好。
但是当我尝试将这些键值对添加到数组' main'时,数组是空的?
如下所示:
$main = array();
function recursive($array){
foreach($array as $key => $value){
//If $value is an array.
if(is_array($value)){
//We need to loop through it.
recursive($value);
} else{
//It is not an array, so print it out.
//$main[$key] = array (
// $key = $value
//);
//echo "Key = " . $key . "| Value = " . $value;
$main[$key] = $value;
}
}
}
如果键和值存在,我可以回应它们,为什么它们不会添加到数组中呢?
答案 0 :(得分:4)
在编写函数时,函数中的变量$main
对于该函数是本地的。对该局部变量所做的更改不会影响函数外部的$main
。
将此添加为您函数的第一行:
global $main;
这将允许您的函数修改全局变量。
答案 1 :(得分:0)
您的函数不起作用,因为$main
变量是在全局范围内定义的,而不是在函数范围内定义的。一种方法是使用$main
将global $main
引入您的函数。
另一种better方法是修改你的函数,使它返回结果数组。
$array = array(
'Batman' => 'Robin',
'Fruits' => array(
'Apple', 'Strawberry'
),
'Sports' => array(
'collective' => 'Basketball',
'one man show' => 'Running'
)
);
$main = array();
function recursive($source){
$result = array();
foreach($source as $key => $value){
//If $value is an array.
if(is_array($value)){
//We need to loop through it.
$result = array_merge($result, recursive($value));
} else{
$result[$key] = $value;
}
}
return $result;
}
var_dump(recursive($array));
答案 2 :(得分:0)
感谢您的帮助。我认为我很难将其复杂化。
我只需要从每个数组中打印几个值,如果值是另一个数组,则从中获取值。
我发现并修改了以下功能,这很简单,并且可以处理
// recursive function to print areas grouped with their children
function RecursiveWrite($array) {
foreach ($array as $vals) {
echo "<div class='row area_level_rows area_level_" . $vals['area_level'] . "'>";
echo "<div class='col-md-12'>" . $vals['area_name'] . "</div>";
echo "</div>";
if(!empty($vals['children'])) {
RecursiveWrite($vals['children']);
}
}
}
RecursiveWrite($area_tree);