相关疑难解决方法(0)

如何通过键名/路径访问和操作多维数组?

我将在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)

php arrays multidimensional-array

18
推荐指数
2
解决办法
4644
查看次数

动态数组键

我有一个像这样的字符串:

$string = 'one/two/three/four';

我把它变成一个数组:

$keys = explode('/', $string);

这个数组可以包含任意数量的元素,如1,2,5等.

如何为多维数组指定某个值,但是使用$keys上面创建的I来标识要插入的位置?

喜欢:

$arr['one']['two']['three']['four'] = 'value';

对不起,如果问题令人困惑,但我不知道如何更好地解释它

php arrays multidimensional-array

8
推荐指数
2
解决办法
9767
查看次数

使用字符串路径从数组中删除元素

我有这样的阵列

$arr = [
   'baz' => [
      'foo' => [
         'boo' => 'whatever'
     ]
   ]
];
Run Code Online (Sandbox Code Playgroud)

无论如何使用字符串输入取消设置['boo']值?

这样的事情

    $str = 'baz->foo->boo';
    function array_unset($str, $arr) {

    // magic here

    unset($arr['baz']['foo']['boo']);
    return $arr;
    }
Run Code Online (Sandbox Code Playgroud)

这个答案非常棒,它是我脚本运行的第一部分.使用字符串路径设置嵌套数组数据 .但它不能逆转.PS eval()不是一个选项:(

php arrays unset

6
推荐指数
1
解决办法
809
查看次数

标签 统计

arrays ×3

php ×3

multidimensional-array ×2

unset ×1