Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果索引包含某个值,如何获取该值_Php_Arrays - Fatal编程技术网

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
    );
}