2015-06-26 72 views
0

我想將此散列表轉換爲數組或對象。是任何可用於將哈希錶轉換爲數組或對象或其他任何內容的php方法。如何將散列表轉換爲數組

<hashtable> 
    <entry> 
    <string>actiontypedesc</string> 
    <string>Deletion of IP Address [148.56.25.133] from Child Nameserver ns4.pankajwelcome.com</string 
> 
    </entry> 
    <entry> 
    <string>entityid</string> 
    <string>61389936</string> 
    </entry> 
    <entry> 
    <string>actionstatus</string> 
    <string>Success</string> 
    </entry> 
</hashtable> 
+1

這可能會幫助你:http://php.net/manual/en/function.xml-parse-into-struct.php –

回答

3

這看起來很像XML,這就是爲什麼你可以使用PHP的SimpleXML擴展:

$hash = '<hashtable> 
    <entry> 
    <string>actiontypedesc</string> 
    <string>Deletion of IP Address [148.56.25.133] from Child Nameserver ns4.pankajwelcome.com</string 
> 
    </entry> 
    <entry> 
    <string>entityid</string> 
    <string>61389936</string> 
    </entry> 
    <entry> 
    <string>actionstatus</string> 
    <string>Success</string> 
    </entry> 
</hashtable>'; 

$asXML = new SimpleXMLElement($hash); 
var_dump($asXML); 

這將創建一個對象,你可以很容易地訪問它的字段。

0

通用轉換不會提供最佳結果。 XML是一種數據結構,通常的轉換通常會導致信息和功能的丟失。

如果你喜歡閱讀這個特定的數據到一個簡單的數組,你可以使用DOM + XPath的:

$document = new DOMDocument(); 
$document->loadXml($xml); 
$xpath = new DOMXpath($document); 

$array = []; 
foreach ($xpath->evaluate('/hashtable/entry') as $entry) { 
    $key = $xpath->evaluate('string(string[1])', $entry); 
    $value = $xpath->evaluate('string(string[2])', $entry); 
    $array[$key] = $value; 
} 

var_dump($array); 

輸出:

array(3) { 
    ["actiontypedesc"]=> 
    string(82) "Deletion of IP Address [148.56.25.133] from Child Nameserver ns4.pankajwelcome.com" 
    ["entityid"]=> 
    string(8) "61389936" 
    ["actionstatus"]=> 
    string(7) "Success" 
} 

/hashtable/entry返回所有entry節點的列表。 string[1]將返回第一個string元素子節點(在列表中),但函數string()將其轉換爲字符串。

+0

謝謝老兄,解決了。 –