Php 如果索引包含某个值,如何获取该值
我有一个数组,其中包含很多键和值。我可以使用索引获得任何值。但是我没有完整的索引,我有它的一部分,我能根据索引的一部分得到值吗 例如:Php 如果索引包含某个值,如何获取该值,php,arrays,Php,Arrays,我有一个数组,其中包含很多键和值。我可以使用索引获得任何值。但是我没有完整的索引,我有它的一部分,我能根据索引的一部分得到值吗 例如: $arr = array("Index"->"MyValue"); $arr[“Index”]将返回“MyValue”,但我需要执行类似$arr[“dex”]或$arr[“My Index”]的操作,以返回相同的“MyValue”以下形式的每个循环将允许您检查值和键: 对于简单的子字符串匹配更可取,但对于更复杂的匹配,您可能需要。您可以使用来查找与您的条
$arr = array("Index"->"MyValue");
$arr[“Index”]
将返回“MyValue”
,但我需要执行类似$arr[“dex”]
或$arr[“My Index”]
的操作,以返回相同的“MyValue”
以下形式的每个循环将允许您检查值和键:
对于简单的子字符串匹配更可取,但对于更复杂的匹配,您可能需要。您可以使用来查找与您的条件匹配的键:
$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
);
}
这只是一个精化的直接答案,通过封装在函数中使其更易于使用 您可能可以从数组中获取所有可用的键(array\u keys
),然后从那里开始搜索,一旦找到,现在使用它来指向IndexHanks bishob,如果我想用另一种方式搜索呢。我在另一个strpos
中编辑了问题|
,并翻转了它的参数顺序。谢谢,我不确定有什么问题,但我创建了一个函数,该函数将数组的键$k取为,但内部函数看不到$k。私有函数matchKeys($array,$k){$matches=array_filter($array,function($key){return false!==strpos($key,$k)| false!==strpos($k,$key);},array_filter_USE_key);}可能需要USE
将该键导入闭包范围。我已经将我的答案细化为一个可重用的函数。
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
);
}