如何在php中设置url常量,同时循环echo以json形式输出

如何在php中设置url常量,同时循环echo以json形式输出,php,constants,Php,Constants,我有一个文件-constants.php,其中常量的定义如下- if (!defined('url')) define("url", "example.com", true); 我想将这个url包含在另一个php文件中,该文件连接到mysql并使用while循环输出json echo ' "url": ' . '"' ."http://.url./s.php?o=$o" . '"' ; 它应该在json文件中输出为 "url": "http://example.com/s.php?

我有一个文件-constants.php,其中常量的定义如下-

if (!defined('url')) define("url",     "example.com", true);
我想将这个url包含在另一个php文件中,该文件连接到mysql并使用while循环输出json

echo '  "url": ' . '"' ."http://.url./s.php?o=$o" . '"' ;
它应该在json文件中输出为

"url": "http://example.com/s.php?o=a+b"
但它在json输出中显示为

"url": "http://.url./s.php?o=a+b"

请告诉我做错了什么

看起来您只是在url:
“.url”周围缺少了一些双引号。

您必须使用相同的引号来括起字符串。我将通过将整个语句分解为单独的部分和正在构建的字符串来解释:

echo 
'  "url": '     "url":
'"'             "url": "
"http://"       "url": "http://
url             "url": "http://{url constant value}
"/s.php?o=$o"   "url": "http://{url constant value}/s.php?o={$o value}
'"'             "url": "http://{url constant value}/s.php?o={$o value}"
''              "url": "http://{url constant value}/s.php?o={$o value}"
"";             "url": "http://{url constant value}/s.php?o={$o value}"
字符串连接的最后两部分不需要,因为您只是在添加空格


更简单:
echo“url”:“.”http://“.url.”/s.php?o=$o“”

看起来您只是在url:
“.url”周围缺少了一些双引号。

您必须使用相同的引号来括起字符串。我将通过将整个语句分解为单独的部分和正在构建的字符串来解释:

echo 
'  "url": '     "url":
'"'             "url": "
"http://"       "url": "http://
url             "url": "http://{url constant value}
"/s.php?o=$o"   "url": "http://{url constant value}/s.php?o={$o value}
'"'             "url": "http://{url constant value}/s.php?o={$o value}"
''              "url": "http://{url constant value}/s.php?o={$o value}"
"";             "url": "http://{url constant value}/s.php?o={$o value}"
字符串连接的最后两部分不需要,因为您只是在添加空格


更简单:
echo“url”:“.”http://“.url.”/s.php?o=$o“”

这行带有
echo
的代码非常复杂。读这一行时,很难理解发生了什么。您可以使用
sprintf
方法而不是字符串串联来避免此问题

<?php

if (!defined('url')) define("url", "example.com", true);

$o = 1;

echo sprintf('"url": "http://%s/s.php?o=%s"', url, $o);

带有
echo
的这行代码非常复杂。读这一行时,很难理解发生了什么。您可以使用
sprintf
方法而不是字符串串联来避免此问题

<?php

if (!defined('url')) define("url", "example.com", true);

$o = 1;

echo sprintf('"url": "http://%s/s.php?o=%s"', url, $o);
像这样:

echo '  "url": ' . '"' ."http://". url ."/s.php?o=$o" . '"' . '' . "";
像这样:

echo '  "url": ' . '"' ."http://". url ."/s.php?o=$o" . '"' . '' . "";

您是否使用字符串手动创建JSON?我建议不要这样做,而是构建一个数据数组并使用json_编码@Aknosis,从mysql获取数据后,针对不同的参数,通过不同的函数进行进一步修改。那么,我是在php中手动创建JSON,而您是在用字符串手动创建JSON吗?我建议不要这样做,而是构建一个数据数组并使用json_编码@Aknosis,从mysql获取数据后,针对不同的参数,通过不同的函数进行进一步修改。因此,我在php中手动创建JSON,同时感谢您的响应。我已经试过了。然后,它输出为
“url”:“http://'.url./s.php?o=a+b”
实际上那些应该是双引号,我更新了我的帖子。谢谢。成功了。你能解释一下双引号和单引号之间的逻辑吗quotes@user20152015更新了我的答案。您必须使用双引号,因为这是您用来包装的http://and/s.php部分的引号类型string@Anosis,您能否提供此类语法规则的文档链接。我总是在这里遇到问题谢谢你的回复。我已经试过了。然后,它输出为
“url”:“http://'.url./s.php?o=a+b”
实际上那些应该是双引号,我更新了我的帖子。谢谢。成功了。你能解释一下双引号和单引号之间的逻辑吗quotes@user20152015更新了我的答案。您必须使用双引号,因为这是您用来包装的http://and/s.php部分的引号类型string@Anosis,您能否提供此类语法规则的文档链接。我总是在这里遇到问题,因为我给出了备选方案+1。编辑并简化了echo行
echo“url”:"' ."http://.url./s.php?o=$o“'”+1表示提供备用。编辑并简化了echo行
echo“url”:"' ."http://.url./s.php?o=$o“'”