复制和修改数组 - php

我没有PHP经验,因此必须在以下代码中修改密码:

    $body=array(
        'userInfo' => array(
            'userName' => $username,
            'password' => $password,
            'applicationKey' => $appKey,
        ),
    );

变量$body在应用程序逻辑和数组记录中均使用:

$this->logger->debug("REQUEST: URL[{$this->config->endpoint}] BODY: " . json_encode($body));

但是我不应该记录密码。我想编辑它。

我知道我可以将数组复制并粘贴到新变量$body_with_password_hidden中,但是我想学习一些PHP习惯用法,更不用说使代码库尽可能紧凑。

有什么优雅的方法可以做到这一点?用一种我更舒服的语言,我会克隆字典并覆盖敏感值。我将如何在PHP中做到这一点?

更多信息

当前的日志语句:

[2018-04-10T18:23:11+00:00] [DEBUG] REQUEST: URL[http://myservice.com/myendpoint/login] BODY: {"userInfo":{"userName":"Administrator","password":"Administrator","applicationKey":"abc123"}} -

所需的日志语句:

[2018-04-10T18:23:11+00:00] [DEBUG] REQUEST: URL[http://myservice.com/myendpoint/login] BODY: {"userInfo":{"userName":"Administrator","password":"********","applicationKey":"abc123"}} -

参考方案

您可以创建一个与数据结构匹配的模板,并使用所需的编辑符号作为相应密钥的值。

$redacted = ['userInfo' => ['password' => '********']];

然后在记录时使用array_replace_recursive覆盖原始数据中的值。

$this->logger->debug(
    "REQUEST: URL[{$this->config->endpoint}] BODY: "
    . json_encode(array_replace_recursive($body, $redacted))
);

这对于覆盖单个值可能是一种矫over过正,但是如果您具有更复杂的结构且需要替换更多的值,则可能是一种更整洁的方法。

PHP-复选框组 - php

我有一个需要发布的表单复选框组。<input type="checkbox" value="true" checked name="chk0[]"> <input type="checkbox" value="false" name=…

PHP Count数组元素 - php

嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…

转义字符无法正常工作 - php

我试图在PHP中创建html内容,并且为onclick事件提供了一个名为uchat的div函数。该函数采用一个字符串的名称参数。如下所示:$name = "Php string"; $echostr .= "<div onClick='uchat(\'$name\')'> &l…

PHP:将数据从二维数组复制到一维数组的最快方法 - php

我有一个巨大的二维PHP数组,带有500万行。$t = [ [ "id" => 1, "name" => "foo" ], [ "id" => 2, "name" => "bar" ] ]; 现在,我必须将此数组的I…