Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.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数组添加键值对_Php_Arrays - Fatal编程技术网

向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

我正在尝试使用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;
                        }
                    }
                }   

如果键和值在那里,我可以回传它们,为什么它们不添加到数组中?

在编写函数时,函数中的变量
$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
内容