作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 XML 文件中的数据,即
<domain>
<host>xyz</host>
<key>keeeeeeeeeey</key>
</domain>
<domain>
<host>xyz</host>
<key>keeeeeeeeeey</key>
</domain>
如果我知道如何找到使用 xml 的稳健性,我会从该 xml 创建一个数组,但由于缺乏知识,我使用以下方法将该 xml 文件转换为数组:
$json = json_encode($xml);
$array = json_decode($json,TRUE);`
下面是我的数组:
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
)
)
)
我想要一个健壮的循环,如果我传递主机名,它会返回 key 。任何人都可以请点灯吗?数组的大小可以增长到 100 000 000 多个条目。
最佳答案
改变你的数组看起来像:
$data = array('domain' => array(
'bdbdfbdvbdbdfbdfbf.net' => '933...',
'bdev1vvvvvvveinf.net' => '933...',
));
然后你可以这样做:
echo $data['domain']['bdbdfbdvbdbdfbdfbf.net'];
对于您当前的数组,没有“稳健”的方法来做到这一点。您必须搜索整个内容:
function get_key($data, $host)
{
foreach ($data['domain'] as $domain)
{
if ($domain['host'] == $host)
return $domain['key'];
}
}
鉴于此新信息:
The size of the array could grow to 100 000 000 plus entries.
我收回这个答案的用处,因为使用任何纯文本格式(包括 XML 或序列化的 PHP 键值数组)来存储如此大量的数据的整个概念都是疯狂的。
您应该将数据存储在带有域索引的数据库中。即使是 sqlite 数据库也是对文本文件线性探测的重大升级。
当然有一些方法可以以优化的自定义格式存储数据,但是没有充分的理由重新发明数据库可以轻松完成的事情。
关于php - 遍历数组的稳健方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8175788/
我是一名优秀的程序员,十分优秀!