微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP – 使用点语法查找数组内容

有没有人看到以下功能有什么问题? (编辑:不,我认为没有任何错误,我只是仔细检查,因为这将插入一个非常常见的代码路径.)

function getnestedVar(&$context, $name) {
    if (strstr($name, '.') === FALSE) {
        return $context[$name];
    } else {
        $pieces = explode('.', $name, 2);
        return getnestedVar($context[$pieces[0]], $pieces[1]);
    }
}

这将基本上转换:

$data, "fruits.orange.quantity"

成:

$data['fruits']['orange']['quantity']

对于上下文,这是我在Smarty中构建的表单实用程序.我还需要表单的名称,所以我需要字符串以基于键的形式,并且不能直接访问Smarty中的Smarty变量.

解决方法:

尝试迭代方法

function getnestedVar(&$context, $name) {
    $pieces = explode('.', $name);
    foreach ($pieces as $piece) {
        if (!is_array($context) || !array_key_exists($piece, $context)) {
            // error occurred
            return null;
        }
        $context = &$context[$piece];
    }
    return $context;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐