Set multi-dimensional array by key path from array values?

前端 未结 5 1592
南笙
南笙 2020-12-10 18:38

Sorry for the terrible title, best I could think of at the time! Say I have a \'path\' array like so;

array(\'this\', \'is\', \'the\', \'path\')

5条回答
  •  粉色の甜心
    2020-12-10 19:32

    One recursive solution:

    function find_in_array(&$array, &$path, $_i=0) {
      // sanity check
      if ( !(is_array($array) && is_array($path)) ) return false;
      $c = count($path); if ($_i >= $c) return false;
    
      $k = $path[$_i];
      if (array_key_exists($k, $array))
        return ($_i == $c-1) ? $array[$k] : find_in_array($array[$k], $path, $_i+1);
      else
        return false;
    }
    

    Parameter $_i is for internal use and should not be set when calling the function.

提交回复
热议问题