【问题标题】:Recursively iterate over an array to change specific key's value递归迭代数组以更改特定键的值
【发布时间】:2012-08-10 10:41:14
【问题描述】:

我有一个这样的数组:

$a = array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => array(
        'key4' => 'value4',
        'key5' => array(
            'key6' => 'value6'
        )
    )
);

如您所见,$a 内部有内部数组

现在,我有一个键列表,例如:

key1
key4
key6

我需要一个脚本来搜索这些键是否存在,如果存在则更改它们的值。 我需要用base64_encode($value_of_the_key)改变他们的价值观

所以也许是一个获取当前值并使用 base64_encode() 函数转换它的回调。

有人可以帮我吗?

我正在尝试查看当前的 php 函数,但似乎没有执行此操作的函数。

谢谢

编辑:

使用下面的代码我可以得到回调中的键......但问题是:

如何直接修改数组中的值?我的意思是……好吧……我得到了键和值,但是如何更改原始数组中的值? ($a)

$a = array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => array(
        'key4' => 'value4',
        'key5' => array(
            'key6' => 'value6'
        )
    )
);


function test($item, $key)
{
    echo "$key. $item<br />\n";
}


array_walk_recursive($a, 'test');

【问题讨论】:

    标签: php


    【解决方案1】:

    array_walk_recursive() 提供回调应该会有所帮助。更多信息here

    【讨论】:

    • 感谢您的回复,但请查看我在问题中所做的编辑。谢谢
    • @Dail 使用function test(&amp;$item, $key)(注意&amp;)并在函数内部修改$item
    猜你喜欢
    • 2019-06-11
    • 2020-12-01
    • 2021-03-22
    • 2019-03-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2013-04-15
    相关资源
    最近更新 更多