有人知道包含类似<?php
return array(
'URL' => 'https://' . $_SERVER['HTTP_HOST'] . str_replace('public', '', dirname($_SERVER['SCRIPT_NAME'])),
'DOMAIN' => $_SERVER['HTTP_HOST'],
'PATH_CONTROLLER' => realpath(dirname(__FILE__).'/../../') . '/application/controller/',
'DEBUG' => true,
'EMAIL_USED_MAILER' => 'phpmailer',
'SEND_MAIL_TO' => 'myreal@email.com',
'SEND_MAIL_FROM' => '',
'NEW_VAR' => 'foo'
);
方法的Util库吗?我必须检查地图及其嵌套的密钥条目。我当然可以编写自己的逻辑,但我喜欢使用Utils来保持我的代码更清洁,并保存一些单元测试。
地图结构为Util.deepContains()
,其中Map<String, Map<String, Object>>
可以是另一个Object
,依此类推。
答案 0 :(得分:1)
否,我不知道库中存在任何现有功能。但是,如果存在,是否值得导入整个库,因为只有一个用例?随意创建自己的功能。请考虑以下示例地图结构:
{
map2={
map3={
4=4,
5=5
}
},
map4={
6=6,
7=7
}
}
无论嵌套了多少Map<String, Object>
,以下递归函数都会迭代所有值,直到找到正确的值。在比较期间,由于正确的比较,您必须从Object
投射到T
。
static <T> boolean deepContains(Map<?, ?> map, T item) {
for (Entry<?, ?> entry: map.entrySet()) {
final Object value = entry.getValue();
boolean returned = false;
if (value instanceof Map<?, ?>) {
returned = deepContains((Map<?, ?>) value, item);
} else {
returned = item.getClass().cast(value).equals(item);
}
if (returned) {return true;}
}
return false;
}
用法:
boolean result = deepContains(map, "4"); // returns true
boolean result = deepContains(map, "7"); // returns true
boolean result = deepContains(map, "8"); // returns false