我将在PHP中实现一个setter,它允许我指定数组(目标)的键或子键,将名称作为点分隔键值传递.
给出以下代码:
$arr = array('a' => 1,
'b' => array(
'y' => 2,
'x' => array('z' => 5, 'w' => 'abc')
),
'c' => null);
$key = 'b.x.z';
$path = explode('.', $key);
Run Code Online (Sandbox Code Playgroud)
从价值的$key
我想达到的值5的$arr['b']['x']['z']
.
现在,给定一个变量值$key
和一个不同的$arr
值(具有不同的深度).
$key
?对于getter get()
我写了这段代码:
public static function get($name, $default = null)
{
$setting_path = explode('.', $name);
$val = $this->settings;
foreach ($setting_path as $key) {
if(array_key_exists($key, $val)) {
$val = $val[$key];
} …
Run Code Online (Sandbox Code Playgroud) 只是想知道是否有办法(或者甚至可能).
所以我有一段与此类似的代码.我有一个字符串,其值包含方括号,类似于访问数组键时使用的字符串.我想通过使用字符串值来创建该数组键.我希望这段代码能够更清楚地表达我的意思.
// String that has a value similar to an array key
$string = 'welcome["hello"]';
$$string = 'thisworks';
// I could then print the array keys value like this
print( $welcome["hello"] );
// This would hopefully output 'thisworks'.
Run Code Online (Sandbox Code Playgroud)
但是,似乎无法让它正常工作.是否有可能(或者我还能怎么做)?
这是特定于WordPress的上下文,但我的问题更多是与PHP相关的...
我发现自己处于一种奇怪的情况下,我需要使用包含正确顺序的键序列的另一个数组来获取多维数组内部的值。
所以本质上我有一个数组看起来像
[0] => 'neighborhood' [1] => 'street' [2] => 'house'
Run Code Online (Sandbox Code Playgroud)
最终我需要的是
get_option( $options_id )['neighborhood']['street']['house']
Run Code Online (Sandbox Code Playgroud)
因此,基本上,我需要'house'
通过使用另一个数组递归向下获取从Options数组中的值。
我不能做这样的事情
foreach ( $array as $value ) {
$sequence .= '[' $value ']';
}
get_option( $options_id ) . $sequence;
Run Code Online (Sandbox Code Playgroud)
因为那样会$sequence
以字符串形式填充值。我一直在尝试explode()
运气,但是我并不是一个真正的PHP向导,所以我希望有一个我以前从未遇到过的明显答案。
我知道这是一个奇怪的情况,但是任何帮助将不胜感激!