如果索引包含特定值php,如何获取值

时间:2017-11-17 01:38:41

标签: php arrays

我有一个包含很多键和值的数组。我可以使用索引获得任何值。但我没有完整的索引,我有一部分,我能否根据索引的一部分得到值。

示例:

$arr = array("Index"->"MyValue");

$arr["Index"]将返回"MyValue",但我需要执行$arr["dex"]$arr["My Index"]之类的操作,以返回相同的"MyValue"

2 个答案:

答案 0 :(得分:2)

您可以使用array_filter查找符合条件的那些键:

$matches = array_filter(
    $array,
    function ($key) { return false !== strpos($key, 'dex'); }, 
    ARRAY_FILTER_USE_KEY
);

See it live on 3v4l.org.

调整闭包内的逻辑以匹配特定需求。在此示例中,如果密钥不包含' 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()