我想将此哈希表转换为数组或对象。 是否有任何可用于将哈希表转换为数组或对象或其他任何内容的 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>
这看起来很像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);
这将创建一个对象,您可以轻松访问其字段。
泛型转换不会提供最佳结果。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()
将其转换为字符串。