我有一个包含很多键和值的数组。我可以使用索引获得任何值。但我没有完整的索引,我有一部分,我能否根据索引的一部分得到值。
示例:
$arr = array("Index"->"MyValue");
$arr["Index"]
将返回"MyValue"
,但我需要执行$arr["dex"]
或$arr["My Index"]
之类的操作,以返回相同的"MyValue"
答案 0 :(得分:2)
您可以使用array_filter
查找符合条件的那些键:
$matches = array_filter(
$array,
function ($key) { return false !== strpos($key, 'dex'); },
ARRAY_FILTER_USE_KEY
);
调整闭包内的逻辑以匹配特定需求。在此示例中,如果密钥不包含' dex',请将密钥视为匹配。根据注释,要搜索包含子字符串的键或本身是子字符串的键,您可以使用:
function array_search_by_partial_key(array $array, $partial) {
return array_filter(
$array,
function ($key) use ($partial) {
return false !== strpos($key, $partial) || false !== strpos($partial, $key);
},
ARRAY_FILTER_USE_KEY
);
}
这只是一个直接回答的详细说明,通过包装函数使其更容易使用。 See it live on 3v4l.org.
答案 1 :(得分:0)
以下表单中的foreach
循环将允许您检查值和键:
foreach( $my_array as $key => $value ) {
// partial matching on $key here
}
对于简单的子字符串匹配strpos()
会更好,但对于更复杂的匹配,您可能需要preg_match()
。