这是一个特定于 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/