繁体   English   中英

PHP 数组 (yaml) - 添加或删除配置文件的部分

[英]PHP array (yaml) - add or remove sections of config file

我有一些使用 yaml 配置文件的软件,我想在注册用户加入时动态地将一个注册用户列表添加到配置文件中,并在他们的帐户被删除时将其删除。

配置文件如下:

    targets:
  users:
    - name: AlFredo01
      uid: a1fa36h2a5hbd6535c919402ba8cc837bd75abfae
      userinfo:
        - email: Alfredo01@gmail.com
        - gender: male
        - country: it
    - name: AlFredo02
      uid: jmed8d83m4mtjf7f7f8j299d8210sla9010labvab10
      userinfo:
        - email: Alfredo02@gmail.com
        - gender: male
        - country: gb

我实际上希望能够在注册/存档上使用 PHP 脚本添加新名称并按名称或 UID 删除。

所有需要的信息都可以在注册时获得。 删除时,他们的 UID/Name 存储在 DB 中,具体如何将其添加到配置文件中。

请问这个可以实现吗?

我以前从未使用过 yaml 文件。 我找到了 php-yaml,我可以将数据解析为数组并打印或转储它。

 <?
$parsed = yaml_parse_file('config2.yml');
var_dump($parsed);
?>

以上确实如您所料转储了数据。 像下面

    Array
(
    [targets] => 
    [users] => Array
        (
            [0] => Array
                (
                    [name] => AlFredo01
                    [uid] => a1fa36h2a5hbd6535c919402ba8cc837bd75abfae
                    [userinfo] => Array
                        (
                            [0] => Array
                                (
                                    [email] => Alfredo01@gmail.com
                                )

                            [1] => Array
                                (
                                    [gender] => male
                                )

                            [2] => Array
                                (
                                    [country] => it
                                )

                        )

                )

            [1] => Array
                (
                    [name] => AlFredo02
                    [uid] => jmed8d83m4mtjf7f7f8j299d8210sla9010labvab10
                    [userinfo] => Array
                        (
                            [0] => Array
                                (
                                    [email] => Alfredo02@gmail.com
                                )

                            [1] => Array
                                (
                                    [gender] => male
                                )

                            [2] => Array
                                (
                                    [country] => gb
                                )

                        )

                )

        )

)

我希望能够有效地删除基于 UID 的完整块。

所以如果我想删除 Alfredo02,我会删除这个部分

                [1] => Array
                (
                    [name] => AlFredo02
                    [uid] => jmed8d83m4mtjf7f7f8j299d8210sla9010labvab10
                    [userinfo] => Array
                        (
                            [0] => Array
                                (
                                    [email] => Alfredo02@gmail.com
                                )

                            [1] => Array
                                (
                                    [gender] => male
                                )

                            [2] => Array
                                (
                                    [country] => gb
                                )

                        )

                )

        )

基于 UID: jmed8d83m4mtjf7f7f8j299d8210sla9010labvab10

此外,我希望能够为新用户添加完整的部分。

我已经尝试了基本的行来获取诸如数组 ID 之类的内容,但一直没有返回任何内容。

$search = array_search('jmed8d83m4mtjf7f7f8j299d8210sla9010labvab10', array_column($parsed, 'uid'));

任何人都可以帮助我删除和添加数据的方法吗? 一旦我可以生成带有添加或删除数据的新“输出”,我就可以将其写回 config.yml 文件。

通过调查和确定,我找到了一种方法,允许您从数组中删除并使用删除的块/用户写回 yml 文件。

$search = print_r(array_search('jmed8d83m4mtjf7f7f8j299d8210sla9010labvab10', array_column($parsed[users], 'uid', true)));
unset($parsed[users][$search]);

echo '<pre>' , print_r($parsed) , '</pre>';

yaml_emit_file("config2.yml",$parsed);

这有效地允许您在users内部搜索您的uid ,然后使用echo在页面上打印结果,但您可以删除它。

然后使用yaml_emit_file将整个输出写回 yml 文件。

下一阶段将研究如何将新用户添加到数组中并在必要时将其写回。

当我到达那一点时,我会更新以造福他人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM