You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP:如何在函数中通过数组参数调用类属性?

解决PHP动态访问STDClass属性的问题

你的核心问题是动态访问对象属性时的解析优先级问题。PHP中直接写->$input_targets[$i]会被错误解析:它会先尝试取$input_targets变量的索引$i值,再将该值作为属性名,而不是先计算函数参数里$input_targets[$i]的结果。

修复后的函数写法

用花括号包裹属性名表达式,明确告诉PHP先计算$input_targets[$i]的值,再作为属性名访问:

function createarray($input_obj, $input_targets, $i)
{
    return $input_obj->collection[0]->{$input_targets[$i]};
}

注:把参数$input_array改名为$input_obj更准确,因为它实际是STDClass实例而非数组,避免命名混淆。

更高效的批量提取方案

如果想一次性把所有目标属性整理成数组,不用循环调用函数,可以优化成:

function extractProperties($input_obj, $targets)
{
    $item = $input_obj->collection[0];
    $result = [];
    foreach ($targets as $prop) {
        $result[$prop] = $item->{$prop};
    }
    return $result;
}

// 使用示例
$targets = ['number','date','amount'];
$orderData = extractProperties($orders, $targets);
// 直接得到关联数组:['number' => 订单号, 'date' => 订单日期, 'amount' => 订单金额]

内容的提问来源于stack exchange,提问作者Albert van Harten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 00:49:56