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;
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...