【问题标题】:Get section name by key name of an ini file in php在php中通过ini文件的键名获取节名
【发布时间】:2017-04-11 13:06:18
【问题描述】:

我有一个如下所示的ini文件:

[236a4e392b6dd0a8409bb91c664ab6468be32555]
76561197961658420=DaRoL
76561197962180350=Spow
76561197962376928=Kolma

[efd3dd758092ad90e35fb634a203c41b90da6333]
76561197964385070=Kelininkas
76561199641652847=Kelininkas

在 PHP 中如何通过键名(或可选的键值)搜索来返回节名。

例如76561197964385070 -> efd3dd758092ad90e35fb634a203c41b90da6333 和可选

Kelininkas -> efd3dd758092ad90e35fb634a203c41b90da6333

我将 ini 文件导入到一个数组中,我能够找到键和项。

但不是上级键的键名。

<?php
header('Content-type: text/plain');

$ini_array = (parse_ini_file("BannedHWs.ini",true));

$steamid="76561197962180330";

function find($item, $key)

{   

    global $steamid;    
    if ($key == $steamid)
    echo "$key FOUND $item\n";

}

array_walk_recursive($ini_array, 'find');

echo "\n";
print_r ($ini_array); // SHOW ARRAY

?>

结果:

76561197962180330 FOUND Spow

Array
(
    [236a4e392b6dd0a8409bb91c664ab6468be32d15] => Array
        (
            [76561197961658460] => DaRoL
            [76561197962180330] => Spow
            [76561197962376938] => Kolma
        )

    [efd3dd758092ad90e35fb634a203c41b90da6895] => Array
        (
            [76561197964385060] => Kelininkas
            [76561199641652827] => Kelininkas
        )

)

提前致谢

【问题讨论】:

  • 你好。我们在这里为您提供帮助,而不是为您编写代码。向我们展示您迄今为止所做的尝试,与我们分享您的想法,我们会为您提供帮助 - 但没有人会为您编写代码。 stackoverflow.com/help/how-to-ask
  • 我添加了一些关于我当前代码的信息,但我仍在试图弄清楚如何获得该多维数组的第一个 Level Key 名称。

标签: php ini


【解决方案1】:

如果您使用的是 linux 机器,这可能会对您有所帮助。这不是解决方案,而是您可以走得更远的路径。

$ cat some_config_ini.txt 
[efd3dd758092ad90e35fb634a203c41b90da6333]
76561197964385070=Kelininkas
76561199641652847=Kelininkas
$ cat some_config_ini.txt | grep Kelininkas -B 1 | head -1
[efd3dd758092ad90e35fb634a203c41b90da6333]

以上命令不适用于您的原始文件。

$ cat som_config_ini.txt | grep Spow -B 1 | head -1
76561197961658420=DaRoL

但是,如果您知道块下的键和值,则可以尝试一下。

$ cat som_config_ini.txt | grep Spow -B 2 | head -1
[236a4e392b6dd0a8409bb91c664ab6468be32555]
$ cat som_config_ini.txt | grep Kolma -B 3 | head -1
[236a4e392b6dd0a8409bb91c664ab6468be32555]

注意传递给 grep [-B 1/2/3] 的参数。

如果您愿意,我可以提供 ruby​​&python 解决方案。

【讨论】:

    【解决方案2】:

    找到我自己的解决方案:

    <?php
    header('Content-type: text/plain');
    
    $ini_array = (parse_ini_file("BannedHWs.ini",true));
    
    $steamid="76561199641652827";
    
    
    function findID(array $array, $path = null) {
        global $steamid;
        foreach ($array as $k => $v) {
            if (!is_array($v)) {
                if ($k == $steamid){
                echo "HWID: $path\n";
                }
            }
            else {           
                findID($v, $path.$k);
            }
        }
    }
    
    findID($ini_array);
    
    //echo "\n";
    //print_r ($ini_array); // SHOW ARRAY
    
    ?>
    

    基于:

    get parent array name after array_walk_recursive function

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      • 2015-02-17
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多