PHP:使用数组在另一个多维数组中获取值

标签 php arrays multidimensional-array

这是一个特定于 WordPress 的上下文,但我的问题更多地与 PHP 相关......

我发现自己处在一种奇怪的情况下,我需要使用另一个包含正确顺序的键序列的数组来获取多维数组深处的值。

所以基本上我有一个数组,看起来像

[0] => 'neighborhood' [1] => 'street' [2] => 'house'

最终我需要的是

get_option( $options_id )['neighborhood']['street']['house']

所以基本上我需要通过使用另一个数组向下递归来从 Options 数组中获取 'house' 的值。

我不能做类似的事情

foreach ( $array as $value ) {
    $sequence .= '[' $value ']';
}
get_option( $options_id ) . $sequence;

因为这会将值作为字符串填充到 $sequence 中。我一直在尝试使用 explode(),但没有任何运气,但我并不是真正的 PHP 向导,所以我希望有一些我以前从未遇到过的明显答案。

我知道这是一个奇怪的情况,但我们将不胜感激!

最佳答案

您可能想要创建某种辅助函数,您可以在其中迭代部分路径,同时跟踪临时结果:

function deep_array_get(array $path, array $subject) {

   $result = $subject;
   foreach ($path as $p) {
      $result = $result[$p];
   }

   return $result;

}

例子:

$p = ["a", "b", "c"];
$s = [1, 2, "a" => [3, 4, "b" => ["c" => 5]]];
var_dump(deep_array_get($p, $s));

// Result: int(5)

在您的确切用例中,它会像这样使用:

$path = ['neighborhood', 'street', 'house'];
$subject = get_option($options_id);

$result = deep_array_get($path, $subject);

关于PHP:使用数组在另一个多维数组中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51835248/

相关文章:

python - 使用条件检查从 numpy 数组中删除某些元素

javascript - 如何按嵌套值对 JSON 对象进行排序?

php - 如何从多个表单中获取输入隐藏值?

php - Woocommerce 优惠券代码

php - 使用错误的表别名生成查询的原则

arrays - MATLAB 中的单元格和数组的串联和索引有何不同?

javascript - 如何按 2 个不同的属性进行过滤?

php - 如何在我现有的 Django Web 应用程序之上集成 wordpress 前端

Python:多维字典

javascript - 在没有太多嵌套循环的情况下在多维数组中查找匹配元素?