向php数组添加键值对
我正在尝试使用php将键值对添加到数组中 当我回显数组时,我得到值向php数组添加键值对,php,arrays,Php,Arrays,我正在尝试使用php将键值对添加到数组中 当我回显数组时,我得到值 echo "Key = " . $key . "| Value = " . $value; Key = area_id| Value = 4000001Key = area_title| Value = Region 一切都好 但是当我尝试将这些键值对添加到数组“main”时,数组是空的吗 如下图所示: $main = array(); function re
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;
}
}
}
如果键和值在那里,我可以回传它们,为什么它们不添加到数组中?在编写函数时,函数中的变量
$main
是该函数的本地变量。对该局部变量所做的更改不会影响函数外部的$main
将其添加为函数的第一行:
global $main;
这将允许您的函数修改全局变量。编写函数时,函数中的变量
$main
是该函数的局部变量。对该局部变量所做的更改不会影响函数外部的$main
将其添加为函数的第一行:
global $main;
这将允许您的函数修改全局变量。您的函数无法工作,因为
$main
变量是在全局范围内定义的,而不是在函数范围内定义的。一种方法是使用global$main
向函数引入$main
另一种方法是修改函数,使其返回结果数组
$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));
函数无法工作,因为
$main
变量是在全局范围内定义的,而不是在函数范围内定义的。一种方法是使用global$main
向函数引入$main
另一种方法是修改函数,使其返回结果数组
$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));
谢谢你的帮助。我想我把事情复杂化了 我只需要从每个数组中打印几个值,如果一个值是另一个数组,则从中获取值 我发现并修改了下面的函数,它非常简单,非常有用
// 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);
//用于打印与其子项分组的区域的递归函数
函数RecursiveWrite($array){
foreach($vals形式的数组){
回声“;
echo“$vals['area_name']”;
回声“;
如果(!空($VAL['children'])){
递归写入($vals['children']);
}
}
}
递归写入($area_tree);
谢谢您的帮助。我想我把事情复杂化了
我只需要从每个数组中打印几个值,如果一个值是另一个数组,则从中获取值
我发现并修改了下面的函数,它非常简单,非常有用
// 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);
//用于打印与其子项分组的区域的递归函数
函数RecursiveWrite($array){
foreach($vals形式的数组){
回声“;
echo“$vals['area_name']”;
回声“;
如果(!空($VAL['children'])){
递归写入($vals['children']);
}
}
}
递归写入($area_tree);
mmmm,补充说,仍然返回空数组?@frobak:按预期工作。您没有在另一个函数中定义$main
,是吗?缩进使它看起来像是在另一个函数中。mmmm补充道,仍然返回一个空数组?@frobak:工作正常。您没有在另一个函数中定义$main
,是吗?缩进使它看起来像是在另一个函数中。显示$array
内容显示$array
内容