【问题标题】:echo value is different when that variable is passed in php当该变量在 php 中传递时,回显值不同
【发布时间】:2023-10-23 06:49:02
【问题描述】:

我在 php java bridge 中工作并遇到了这个问题。 下面是代码

 $payID     =  $epaymentpipe->getPaymentId();

 echo $payID;

打印期望值,例如 5323423123

但是当我在下面的标头中传递相同的变量时,对象 id 正在传递 payID。

header("location: URL?PaymentID=".$payID);

它像 http://URL?PaymentID=Object id #53 一样传递

我需要知道这里发生了什么。当变量正确回显其打印但当我使用变量时对象ID正在传递。

【问题讨论】:

  • 你能把整个代码贴出来吗?
  • var_dump($payID) 带给你什么?
  • var_dump($payID) 给了我对象数组
  • 对象具体有没有返回id的方法看文档。

标签: php php-5.3 php-java-bridge


【解决方案1】:
header("location: URL?PaymentID=".$payID);

使用

header("location: URL?PaymentID=".((string)$payID));

并将此错误报告给 PHP 开发人员。

.运算符应使用 $object->__toString() 将其参数转换为字符串。

请注意,这已在 PHP 5.3 及更高版本中修复!

【讨论】:

    【解决方案2】:

    将对象转换为字符串:

    $payID = (string)$epaymentpipe->getPaymentId();
    header("location: URL?PaymentID=".$payID);
    

    【讨论】:

      【解决方案3】:

      echo 的定义与 print_r 和 var_dump 的定义不同,每当发生这种情况时,通过 print_r 或 var_dump 转储来检查值。

      【讨论】:

      • 我通过 var_dump 打印一个长对象数组来检查它
      最近更新 更多