在PHP

2017-04-11 89 views
0

ini文件的密鑰名獲取段名我有一個ini文件看起來像這樣:在PHP

[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 
     ) 

) 

在此先感謝

+2

你好。我們在這裏爲您提供幫助,而不是爲您編寫代碼。向我們展示迄今爲止您嘗試過的內容,與我們分享您的想法,我們會幫助您 - 但沒有人會爲您編寫代碼。 http://stackoverflow.com/help/how-to-ask – Twinfriends

+0

我添加了一些關於我當前代碼的信息,但我仍然試圖弄清楚如何獲得該多維數組的第一級密鑰名稱。 – Nordi

回答

0

如果你是一個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]的參數。

如果您願意,我可以提供紅寶石& python解決方案。

0

找到自己的解決方案:基於

<?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