我有XML文件中的数据,即
<domain>
<host>xyz</host>
<key>keeeeeeeeeey</key>
</domain>
<domain>
<host>xyz</host>
<key>keeeeeeeeeey</key>
</domain>
Run Code Online (Sandbox Code Playgroud)
从XML我创建了稳健性的阵列有我知道如何发现使用XML我早就这样做了,但我缺乏的知识我使用转换该XML文件到数组:
$json = json_encode($xml);
$array = json_decode($json,TRUE);`
Run Code Online (Sandbox Code Playgroud)
下面是我的数组:
Array
(
[domain] => Array
(
[0] => Array
(
[host] => bdbdfbdvbdbdfbdfbf.net
[key] => 933f416350de1a955544b30b5bb7ca09cfa2311101a22972320cc4c7af2ecedc03f36b8a48961ef938972478592a1e261819052b51c09a45cf805663f83cb2c0233969255a2c3e2e7e212a295a247b785d41
)
[1] => Array
(
[host] => bdev1vvvvvvveinf.net
[key] => 933f416350de1a955544b30b5bb7ca09cfa2311101a22972320cc4c7af2ecedc03f36b8a48961ef938972478592a1e261819052b51c09a45cf805663f83cb2c0233969255a2c3e2e7e212a295a247b785d41
)
[2] => Array
(
[host] => bdev1.aaaaaaaaureinf.net
[key] => 933f416350de1a955544b30b5bb7ca09cfa2311101a22972320cc4c7af2ecedc03f36b8a48961ef938972478592a1e261819052b51c09a45cf805663f83cb2c0233969255a2c3e2e7e212a295a247b785d41
)
[3] => Array
(
[host] => bdennnnnnnninf.net
[key] => 933f416350de1a955544b30b5bb7ca09cfa2311101a22972320cc4c7af2ecedc03f36b8a48961ef938972478592a1e261819052b51c09a45cf805663f83cb2c0233969255a2c3e2e7e212a295a247b785d41
)
[4] => Array
(
[host] => bdeveewerwerwerwerreinf.net
[key] => 933f416350de1a955544b30b5bb7ca09cfa2311101a22972320cc4c7af2ecedc03f36b8a48961ef938972478592a1e261819052b51c09a45cf805663f83cb2c0233969255a2c3e2e7e212a295a247b785d41
)
)
)
Run Code Online (Sandbox Code Playgroud)
我想要一个健壮的循环,如果我传递主机名,它将返回密钥.任何人都可以请一些光吗?阵列的大小可以增加到10亿加条目.
将数组更改为:
$data = array('domain' => array(
'bdbdfbdvbdbdfbdfbf.net' => '933...',
'bdev1vvvvvvveinf.net' => '933...',
));
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
echo $data['domain']['bdbdfbdvbdbdfbdfbf.net'];
Run Code Online (Sandbox Code Playgroud)
使用当前阵列没有"强大"的方法.你必须搜索整个事情:
function get_key($data, $host)
{
foreach ($data['domain'] as $domain)
{
if ($domain['host'] == $host)
return $domain['key'];
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于这一新信息:
阵列的大小可以增加到10亿加条目.
我收回了这个答案的用处,因为使用任何纯文本格式(包括XML或序列化的PHP键值数组)来存储这些数据的整个概念都是疯狂的.
您应该将数据存储在索引域的数据库中.即使是sqlite数据库也是文本文件的线性探测的主要升级.
当然,有一些方法可以将数据存储在优化的自定义格式中,但实际上没有理由重新发明数据库可以轻松完成的任务.