【问题标题】:Adding key value pairs to php array将键值对添加到php数组
【发布时间】:2016-05-18 19:31:54
【问题描述】:

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

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

【问题讨论】:

  • 显示$array内容

标签: php arrays


【解决方案1】:

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

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

global $main;

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

【讨论】:

  • mmmm,补充一下,还是返回一个空数组?
  • @frobak:按预期工作。您没有在另一个函数中定义$main 是吗?缩进让你看起来像是在另一个函数中。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    感谢您的帮助。我想我把它复杂化了。

    我只需要从每个数组中打印几个值,如果一个值是另一个数组,则从中获取值。

    我找到并修改了下面的函数,很简单,很好用

                // 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);
    

    【讨论】:

      猜你喜欢
      • 2016-03-28
      • 2014-01-10
      • 2018-07-10
      • 2022-12-28
      • 2018-05-24
      • 1970-01-01
      • 2013-07-29
      • 2016-07-22
      • 1970-01-01
      相关资源
      最近更新 更多