Php 检查字符串中是否存在数组中的索引

Php 检查字符串中是否存在数组中的索引,php,arrays,Php,Arrays,您知道如何测试数组中是否存在基于我们在字符串中传递的内容的索引吗 假设以下代码: <?php $myArray = [ "elemOne" => "valueElemOne", "elemTwo" => [ "elemTwoOne" => "valueElemTwoOne", "elemTwoTwo" => [ "elemThreeOne" => "valueElemThreeOne",

您知道如何测试数组中是否存在基于我们在字符串中传递的内容的索引吗

假设以下代码:

<?php

$myArray = [
    "elemOne" => "valueElemOne",
    "elemTwo" => [
        "elemTwoOne" => "valueElemTwoOne",
        "elemTwoTwo" => [
            "elemThreeOne" => "valueElemThreeOne",
            "elemThreeTwo" => "valueElemThreeTwo",
        ],
    ],
];
在我的例子中,这自然会返回false,因为我的数组中不存在索引
“elemThreeThree”
。我尝试拆分字符串,尝试将其格式化为
[elemTwo][elemTwoTwo][elemThreeThree]
,然后对其进行求值,但没有任何效果


您是否想到了一种可能的方法来帮助我?

为什么拆分不起作用? 这有什么问题吗

<?php
$arrayTest = array(
    "arrayOne" => "string", 
    "arrayTwo" => array(
        "arrayThree"    => "string",
        "arrayFour"     => array("winner" => "me")
    )
);

var_dump(expanded_key_exists($arrayTest, "arrayOne"));
var_dump(expanded_key_exists($arrayTest, "arrayTwo"));
var_dump(expanded_key_exists($arrayTest, "arrayTwo/arrayThree"));
var_dump(expanded_key_exists($arrayTest, "arrayTwo/arrayThree/arrayTwenty"));
var_dump(expanded_key_exists($arrayTest, "arrayTwo/arrayFour"));
var_dump(expanded_key_exists($arrayTest, "arrayTwo/arrayFour/winner"));

if(expanded_key_exists($arrayTest, "arrayTwo/arrayFour/winner")){
    echo "The winner is: " . expanded_array_key($arrayTest, "arrayTwo/arrayFour/winner");
}

function expanded_key_exists($array, $key){
    $arrayKeys = explode("/", $key);
    foreach($arrayKeys as $someKey){
        if(is_array($array) && array_key_exists($someKey, $array)){
            $array = $array[$someKey];
        }else{
            return false;
        }
    }
    return true;
}

function expanded_array_key($array, $key){
    $arrayKeys = explode("/", $key);
    foreach($arrayKeys as $someKey){
        if(is_array($array) && array_key_exists($someKey, $array)){
            $array = $array[$someKey];
        }else{
            return null;
        }
    }
    return $array;
}
?>

简单的解决方案可能是

  <?php
     $arr = array('hello'=>array('world'=>array('in'=>'jo')));
     $myString = "hello/world/inf";

     function checkString($string, array $search_array) {
        $test = explode('/',$string);
        foreach($test as $key) {
           if(isset($search_array[$key])) $search_array = $search_array[$key];
           else return false;
        }
        return true;
     }
     var_dump(checkString($myString,$arr));
     die;

输出顺便说一句:bool(真)bool(真)bool(真)bool(假)bool(真)bool(真)bool(真)获胜者是:我很生气,我不能对这个问题绞尽脑汁。没问题,很乐意帮忙。
  <?php
     $arr = array('hello'=>array('world'=>array('in'=>'jo')));
     $myString = "hello/world/inf";

     function checkString($string, array $search_array) {
        $test = explode('/',$string);
        foreach($test as $key) {
           if(isset($search_array[$key])) $search_array = $search_array[$key];
           else return false;
        }
        return true;
     }
     var_dump(checkString($myString,$arr));
     die;