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

使用web3.php调用BSC合约含uint256与address[]参数时遇参数错误

使用web3.php调用BSC合约quote方法的参数传递问题

我在用web3.php调用BSC链上的智能合约时,无参方法(比如WETH)调用正常:

$web3 = new Web3('https://bsc-dataseed.binance.org');
$contract = new Contract($web3->provider, $abi);

$contract->at('0x10ED43C718714eb63d5aA57B78B54704E256024E')->call('WETH', function($err, $result) {
    print_r($result);
});

但调用带uint256和address[]参数的quote方法时,始终抛出错误:

InvalidArgumentException

Please make sure you have put all function params and callback.

我之前的错误调用代码是:

$contract->at('0x10ED43C718714eb63d5aA57B78B54704E256024E')->call('quote', [
    '25000000000000000000',
    '[0x8C851d1a123Ff703BD1f9dabe631b69902Df5f97, 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56]',
], function($err, $result) {
    print_r($result);
});

问题原因

错误核心是address[]参数的传递方式:你把数组转成了字符串,web3.php无法识别这种格式,必须直接传递原生PHP数组。另外要注意uint256大数值用字符串传递可避免溢出。

正确调用方式

直接将path参数以PHP数组形式传递:

$contract->at('0x10ED43C718714eb63d5aA57B78B54704E256024E')->call('quote', [
    '25000000000000000000', // uint256类型的amountIn,用字符串避免数值溢出
    [
        '0x8C851d1a123Ff703BD1f9dabe631b69902Df5f97',
        '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56'
    ] // address[]类型的path,直接传PHP数组
], function($err, $result) {
    if ($err) {
        var_dump($err);
        return;
    }
    print_r($result);
});

如果想用带参数名的关联数组传递,格式如下:

$contract->at('0x10ED43C718714eb63d5aA57B78B54704E256024E')->call('quote', [
    'amountIn' => '25000000000000000000',
    'path' => [
        '0x8C851d1a123Ff703BD1f9dabe631b69902Df5f97',
        '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56'
    ]
], function($err, $result) {
    if ($err) {
        var_dump($err);
        return;
    }
    print_r($result);
});

注意事项

  • uint256类型的大数值必须用字符串传递,防止PHP整数溢出;
  • 数组类型参数(如address[])必须直接传PHP数组,不能转为字符串;
  • 确保ABI中quote方法的参数定义和你传递的顺序/名称完全匹配,参数不匹配也会触发该错误。

内容的提问来源于stack exchange,提问作者GPaul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:40:21