php - 如何在 PHP 中读取此结果?
问题描述
如何使用 PHP 读取此结果?这是请求结果的 print_r:
object(PhpSigep\Services\Result)[687]
protected 'isSoapFault' => boolean false
protected 'errorCode' => null
protected 'errorMsg' => null
protected 'result' =>
array (size=38)
0 =>
object(PhpSigep\Model\CalcPrecoPrazoResposta)[730]
protected 'servico' =>
object(PhpSigep\Model\ServicoDePostagem)[731]
...
protected 'valor' => float 12.28
protected 'prazoEntrega' => int 5
protected 'valorMaoPropria' => float 0
protected 'valorAvisoRecebimento' => float 0
protected 'valorValorDeclarado' => float 0
protected 'entregaDomiciliar' => boolean true
protected 'entregaSabado' => boolean false
protected 'erroCodigo' => int 0
protected 'erroMsg' => null
protected '_failIfAtributeNotExiste' => boolean true
1 =>
object(PhpSigep\Model\CalcPrecoPrazoResposta)[732]
protected 'servico' =>
object(PhpSigep\Model\ServicoDePostagem)[733]
...
protected 'valor' => float 22.9
protected 'prazoEntrega' => int 5
protected 'valorMaoPropria' => float 0
protected 'valorAvisoRecebimento' => float 0
protected 'valorValorDeclarado' => float 0
protected 'entregaDomiciliar' => boolean true
protected 'entregaSabado' => boolean false
protected 'erroCodigo' => int 0
protected 'erroMsg' => null
protected '_failIfAtributeNotExiste' => boolean true
我想读取数组,我正在尝试 $result->result、$result['result'] 和其他组合,但我真的没有设法读取它。有人能帮助我吗?
解决方案
首先,验证类定义中是否有像getResult()这样的公共方法。
如果您无法修改类定义,请像这样使用反射:
代码示例:
function accessProtected($obj, $prop) {
$reflection = new ReflectionClass($obj);
$property = $reflection->getProperty($prop);
$property->setAccessible(true);
return $property->getValue($obj);
}
调用方法:
$data = accessProtected($result,"result");
要访问内部数据,请递归调用该函数。
如果你想获得勇气和prazoEntrega
foreach($data as $CalcPrecoPrazoResposta){
$valor = accessProtected($CalcPrecoPrazoResposta,"valor");
$prazoEntrega = accessProtected($CalcPrecoPrazoResposta,"prazoEntrega");
echo $valor;
echo $prazoEntrega;
}
推荐阅读
- visual-studio - 无法添加 TFS 服务器:“找不到方法:'Void Microsoft.VisualStudio.Services.Common.IssuedTokenCredential.set_TokenStorageUrl(System.Uri)'”
- c++ - Q3DSurface:半透明 QSurface3DSeries
- c# - 如何使用 Web API(cs 或 asp.net)调用 Powershell 脚本
- angularjs - ta-insert-video 嵌入视频,无重定向
- material-design - UE4 尝试创建材质或编辑预制材质时抛出错误 [SM5] metallib: Invalid bitcode file
- reactjs - 反应 div 样式未在渲染时更新
- python - 如何处理 cx_Oracle 连接内的 for 循环内的错误?
- react-native - 图标或图像 (PNG),哪个最具表现力?
- openlayers - Openlayers 5.3 如何重新加载 ImageWMS 源以显示来自服务器的更新数据
- r - 比较复杂结构的列表