在php中回显/返回一个数组
Posted
技术标签:
【中文标题】在php中回显/返回一个数组【英文标题】:Echo/return an array in php 【发布时间】:2013-10-23 19:47:16 【问题描述】:我试图从 php 文件中查询数据库,然后将结果(每行的 userLOC)返回给调用 Jquery 函数。
调用 Jquery:
$.post(url, data, function (data)
alert(data);
)
相关PHP:
$sql = "Select * from location";
$result = mysql_query($sql);
$stack = array();
while($row = mysql_fetch_array($result))
array_push($stack, $row["userLOC"]);
return $stack;
问题是我无法正确返回它,如果我“echo $stack”它不起作用,它说我试图将数组转换为字符串。如果我“回显 $stack[0]”,它将正确地给我数组中的第一个结果,所以我知道这些值被正确存储(如 $stack[1] 等),但这只会发回一个值.如果我如图所示“返回 $stack”,则不会发出任何警报,因为没有回显。我将如何取回整个数组以便我可以遍历并在 jquery 端使用它们?
【问题讨论】:
【参考方案1】:echo json_encode($stack);
可以帮到你
在 jquery 端使用jQuery.parseJSON()
【讨论】:
【参考方案2】:在 PHP 中
$foo = array();
echo $foo;
将产生文字字符串Array
作为输出。
您需要将数组转换为字符串。由于您正在处理 javascript 目标,因此使用 JSON 作为这样做的完美方式:
$foo = array('a', 'b', 'c', 'd', 'e');
echo json_encode($foo);
然后在你的 JS 代码中:
$.get(...., function (data)
alert(data[1]); // spits out 'b'
);
记得告诉 jquery 你期待 JSON 输出。
【讨论】:
非常感谢,如果我现在只是 alert(data),我会看到整个数组的内容,即 "["a","b","c"]" 所以数据是到达那里,但是如果我尝试引用其中一个元素,例如 alert(data[0]) 它会给出“[”,这是第一个字符。 然后它被视为一个字符串,你需要告诉 jquery 你正在获取 json,例如$.get(url, data, function, 'json');
,根据文档:api.jquery.com/jQuery.get【参考方案3】:
您需要将数组转换为 JSON 对象,如下所示:return json_encode($stack);
【讨论】:
【参考方案4】:您需要以可以通过 HTTP 传输到客户端并用于获取原始数据的方式包装(序列化)数据。 通常的容器格式是 XML 和 JSON。 JSON 非常适合在 JavaScript 中使用,因此请使用 PHP 函数 json_encode() 并回显结果。
【讨论】:
【参考方案5】:只需将您的数组转换为 JSON 对象并将其返回给您的 JavaScript:
return json_encode($stack);
【讨论】:
【参考方案6】:你会想要使用 JSON!
客户端:
jQuery.post(url, data, function( data )
//Data is already converted from JSON
, "json");
服务器端:
return json_encode($stack);
Explanation
希望这会有所帮助!
【讨论】:
【参考方案7】:正如其他人所说,您可能希望使用 json 之类的东西来包装输出:
echo json_encode($stack);
但是,如果您不是在寻找具有 JSON 格式复杂性的输出,您可以只使用 implode() 来输出一个逗号分隔的列表:
echo implode(',',$stack);
【讨论】:
以上是关于在php中回显/返回一个数组的主要内容,如果未能解决你的问题,请参考以下文章