【问题标题】:I want to pass a string to an obect我想将字符串传递给对象
【发布时间】:2017-12-08 05:25:42
【问题描述】:

我正在使用一个使用类对象的小部件,如下所示:

$p->data = array(array(array('01-Jan-2017',200),array('02-Feb-2017',210)));

但我想使用 Db 中的数据动态构建此数组以扩展数组结构,例如:

$wstr = "array(array(array('$varR1C1,$varR1C2),array('$varR2C1',$varR‌​2C3),array('$varR3C1‌​',$varR3C2),array(ar‌​ray('$varR4C1',$varR‌​4C2),array('$varR5C1‌​',$varR5C2),array('$‌​varR6C1',$varR6C2)))‌​;"

这将启用(使用小部件)具有 2 条线的折线图,每条线有 3 个配对值。如果我再尝试:

$p->data = $wstr;

这不起作用。如何将字符串转换为对象?我已经尝试过 JSON_encode,但这也不起作用,即:

$p->data = substr(json_encode($wstr),1,strlen(json_encode($wstr))-2)

substr 从 encode 中去掉 " 的地方(尝试了有 & 没有!)

【问题讨论】:

  • 你听说过 JSON 吗?
  • 使用 JSON。它意味着可以安全地序列化和反序列化。这是任意代码,您不想盲目评估。
  • 我确实看过 JSON,但是当我尝试以下操作时仍然失败。 $wstr = "array(array(array('01-Jan-2017',200),array('02-Feb-2017',210)))"; echo "

    json_encode2:".substr(json_encode($wstr),1,strlen(json_encode($wstr))-2)."

    ";即显示回显: json_encode2:array(array(array('01-Jan-2017',200),array('02-Feb-2017',210))) - json_decode 什么也没返回!

标签: php arrays json casting


【解决方案1】:

如果我理解正确,在您的 PHP 代码中,您有变量 $var1$var2$var3$var4,并且您希望使用这些变量来填充数组,而不是在例子?

如果是这样,为什么不简单

$p->data = array(array( array($var1, $var2), array($var3, $var4) ));

?

顺便说一句,对于现代语法(PHP 5.4 及更高版本),我们更喜欢对数组使用更短的语法(对于来自其他语言的人来说更熟悉),您的代码将如下所示:

$p->data = [ [ [$var1, $var2], [$var3, $var4] ] ];

【讨论】:

  • 我应该更明确一点。当说我想从简单示例中动态更改数组结构时,我的意思是能够使用 Db 中的数据来扩展它,例如$p->data = array(array(array('$varR1C1,$varR1C2),array('$varR2C1',$varR2C3),array('$varR3C1',$varR3C2),array(array('$varR4C1' ,$varR4C2),array('$varR5C1',$varR5C2),array('$varR6C1',$varR6C2))); 这将启用(使用小部件)带有 2 行的折线图,每行 3 个配对值
  • 请更新问题并提供更多详细信息,尤其是您如何从数据库中读取数据的示例。
  • P.S.我尝试了您建议的格式并且可以确认此结构有效。但我仍然不知道如何动态构建这个结构并将其转换为对象。谢谢
  • 我对 Db 轴很满意,而且我可以构建所需格式的字符串;问题是如何将字符串转换为对象。 DB 轴代码:$conn = new mysqli('localhost', 'root', '', 'ncbv03'); $sql = "select stdate, max(score) from hist where rid = 1 group by sdate;"; echo ""; $result = $conn->查询($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $when = $row["sdate"]; $what = $row["score"]; echo ""; } } else { echo ""; } 回声“
    什么时候 什么
    $when $what
    无数据
    ”;
  • @kcoops 如果你用新的细节编辑你的问题会更容易处理,然后我可以用你需要的东西编辑我的答案 - 在 cmets 中编写代码真的很难。跨度>
猜你喜欢
  • 2019-11-16
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 2017-05-11
  • 1970-01-01
相关资源
最近更新 更多