Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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_Multidimensional Array - Fatal编程技术网

Php 如何仅从多维数组中提取特定级别?

Php 如何仅从多维数组中提取特定级别?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,这是我的阵列: array(1) { ["farm"]=> array(2) { ["folder1"]=> array(2) { ["horse"]=> array(1) { ["fred.jpg"]=> string(30) "farm/folder1/horse/fred.jpg" }

这是我的阵列:

array(1) {
      ["farm"]=>
      array(2) {
        ["folder1"]=>
        array(2) {
          ["horse"]=>
          array(1) {
            ["fred.jpg"]=>
            string(30) "farm/folder1/horse/fred.jpg"
          }
          ["cat"]=>
          array(1) {
            ["john.jpg"]=>
            string(28) "farm/folder1/cat/john.jpg"
          }
        }
        ["folder2"]=>
        array(1) {
          ["cat"]=>
          array(2) {
            ["sam.jpg"]=>
            string(27) "farm/folder2/cat/sam.jpg"
            ["cat"]=>
            array(1) {
              ["john.jpg"]=>
              string(32) "farm/folder2/cat/cat/john.jpg"
            }
          }
        }
      }
    }
我想创建一个数组,只显示我的
变量的级别及其子级别

例如,如果我的变量是
folder1
我的数组应该如下所示:

          array(1) {
            ["folder1"]=>
            array(2) {
              ["horse"]=>
             string(0) "" //the value is not important, only the key
              ["cat"]=>
            string(0) ""
            } 
         }
如果我的变量是
farm
,结果应该是

array(1) {
          ["farm"]=>
          array(2) {
            ["folder1"]=>
           string(0) "" 
            ["folder2"]=>
            string(0) ""    
          }
        }
我真的不知道怎么做,所以这里是我的实验:

function myfunction($array, $var){
  $newArray = array();
  $newArray = $array[$var][0];
  return $newArray;
}

我的结果是
NULL

您可以使用递归函数在数组的每个级别搜索所需的键

function get_key($haystack, $needle) {
    if (is_array($haystack)) {                       // don't search non-array values
        foreach ($haystack as $key => $value) {
            if ($key == $needle) {                   // if searched key is found
                if (is_array($value) {
                    foreach ($value as &$subvalue) { // set any child keys to ''
                        $subvalue = '';
                    }
                }
                return array($needle => $value);     // and return the result.

            } else {                                 // If it isn't found, 
                $result = get_key($value, $needle);  // try to find it in the next level
                if ($result) return $result;         // and return it if it's found.
            }
        }
    }
    // implicitly returns null if the key is not found
}

$result = get_key($your_array, 'folder1');
试试这个:

function multiKeyArray(array $arr, $key) {

        // is in base array?
        if (array_key_exists($key, $arr)) {
            return $arr[$key];
        }

        // check arrays contained in this array
        foreach ($arr as $element) {
            if (is_array($element)) 
                return multiKeyArray($element, $key);               
        }

        return false;
}

$result = multiKeyArray($input, 'farm');

如果你否决我的问题,我会很高兴得到反馈,我做错了什么。谢谢:)