将键值对添加到php数组

时间:2016-05-18 19:31:54

标签: php arrays

我试图使用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;
                        }
                    }
                }   

如果键和值存在,我可以回应它们,为什么它们不会添加到数组中呢?

3 个答案:

答案 0 :(得分:4)

在编写函数时,函数中的变量$main对于该函数是本地的。对该局部变量所做的更改不会影响函数外部的$main

将此添加为您函数的第一行:

global $main;

这将允许您的函数修改全局变量。

答案 1 :(得分:0)

您的函数不起作用,因为$main变量是在全局范围内定义的,而不是在函数范围内定义的。一种方法是使用$mainglobal $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);