如何使用 PHP 为 JSON 创建一个数组?
Posted
技术标签:
【中文标题】如何使用 PHP 为 JSON 创建一个数组?【英文标题】:How to create an array for JSON using PHP? 【发布时间】:2011-10-08 01:35:50 【问题描述】:我想从 php 代码创建一个 json 数组:
[
"region":"valore","price":"valore2",
"region":"valore","price":"valore2",
"region":"valore","price":"valore2"
]
我该怎么做?
【问题讨论】:
How to generate .json file with PHP?的可能重复 【参考方案1】:我创建了一个粗略而简单的 jsonOBJ 类来用于我的代码。 PHP 不包含像 javascript/Node 那样的 json 函数。您必须进行不同的迭代,但可能会有所帮助。
<?php
// define a JSON Object class
class jsonOBJ
private $_arr;
private $_arrName;
function __construct($arrName)
$this->_arrName = $arrName;
$this->_arr[$this->_arrName] = array();
function toArray()return $this->_arr;
function toString()return json_encode($this->_arr);
function push($newObjectElement)
$this->_arr[$this->_arrName][] = $newObjectElement; // array[$key]=$val;
function add($key,$val)
$this->_arr[$this->_arrName][] = array($key=>$val);
// create an instance of the object
$jsonObj = new jsonOBJ("locations");
// add items using one of two methods
$jsonObj->push(json_decode("\"location\":\"TestLoc1\"",true)); // from a JSON String
$jsonObj->push(json_decode("\"location\":\"TestLoc2\"",true));
$jsonObj->add("location","TestLoc3"); // from key:val pairs
echo "<pre>" . print_r($jsonObj->toArray(),1) . "</pre>";
echo "<br />" . $jsonObj->toString();
?>
将输出:
Array
(
[locations] => Array
(
[0] => Array
(
[location] => TestLoc1
)
[1] => Array
(
[location] => TestLoc2
)
[2] => Array
(
[location] => TestLoc3
)
)
)
"locations":["location":"TestLoc1","location":"TestLoc2","location":"TestLoc3"]
要迭代,转换为普通对象:
$myObj = $jsonObj->toArray();
然后:
foreach($myObj["locations"] as $locationObj)
echo $locationObj["location"] ."<br />";
输出:
TestLoc1TestLoc2TestLoc3
直接访问:
$location = $myObj["locations"][0]["location"];
$location = $myObj["locations"][1]["location"];
一个实际的例子:
// return a JSON Object (jsonOBJ) from the rows
function ParseRowsAsJSONObject($arrName, $rowRS)
$jsonArr = new jsonOBJ($arrName); // name of the json array
$rows = mysqli_num_rows($rowRS);
if($rows > 0)
while($rows > 0)
$rd = mysqli_fetch_assoc($rowRS);
$jsonArr->push($rd);
$rows--;
mysqli_free_result($rowRS);
return $jsonArr->toArray();
【讨论】:
【参考方案2】:这就是我在下面@tdammers 提供的解决方案的帮助下能够做到的。 以下行将放在 foreach 循环中。
$array[] = array('power' => trim("Some value"), 'time' => "time here" );
然后用json编码函数对数组进行编码
json_encode(array('newvalue'=> $array), 200)
【讨论】:
【参考方案3】:只需输入这一行就会给你一个 json 数组,
echo json_encode($array);
通常您使用json_encode
从 ios 或 android 应用程序读取数据。所以请确保除了准确的 json 数组之外不要回显任何其他内容。
【讨论】:
【参考方案4】:对于数组也可以使用简短的注释:
$arr = [
[
"region" => "valore",
"price" => "valore2"
],
[
"region" => "valore",
"price" => "valore2"
],
[
"region" => "valore",
"price" => "valore2"
]
];
echo json_encode($arr);
【讨论】:
【参考方案5】:每次在 php 中创建 json 的最佳方法是首先转换 ASSOCIATIVE 数组中的值。
之后,只需使用json_encode($associativeArray)
进行简单编码。我认为这是在 php 中创建 json 的最佳方式,因为每当我们在 php 中获取结果形式的 sql 查询时,大多数时候我们使用fetch_assoc
函数获取值,该函数也返回一个关联数组。
$associativeArray = array();
$associativeArray ['FirstValue'] = 'FirstValue';
... 等等
在那之后。
json_encode($associativeArray);
【讨论】:
【参考方案6】:使用PHP原生的json_encode
,像这样:
<?php
$arr = array(
array(
"region" => "valore",
"price" => "valore2"
),
array(
"region" => "valore",
"price" => "valore2"
),
array(
"region" => "valore",
"price" => "valore2"
)
);
echo json_encode($arr);
?>
更新:在评论中回答您的问题。你这样做:
$named_array = array(
"nome_array" => array(
array(
"foo" => "bar"
),
array(
"foo" => "baz"
)
)
);
echo json_encode($named_array);
【讨论】:
对不起,如果我想要 "nome_array": ["foo":"bar","foo":"baz"] ??【参考方案7】:简单:只需创建一个(嵌套的)PHP 数组并在其上调用json_encode
。数字数组转换为 JSON 列表 ([]
),关联数组和 PHP 对象转换为对象 ()。示例:
$a = array(
array('foo' => 'bar'),
array('foo' => 'baz'));
$json = json_encode($a);
给你:
["foo":"bar","foo":"baz"]
【讨论】:
对不起,如果我想要 "nome_array": ["foo":"bar","foo":"baz"] ?? 再次阅读我的帖子。如果您想将某些内容转换为 JSON 对象,请在 PHP 中将其设为关联数组(其中键是字符串)。如果您希望它转换为 JSON 列表,请将其设为普通数组(带有隐式整数键)。每个数组元素的值又可以是一个数组,这就是你想要的。【参考方案8】:简单的peasy柠檬榨汁:http://www.php.net/manual/en/function.json-encode.php
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
andyrusterholz at g-m-a-i-l dot c-o-m
在上述页面上有一个帖子,它也可以处理复杂的嵌套数组(如果你喜欢的话)。
【讨论】:
以上是关于如何使用 PHP 为 JSON 创建一个数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 json 编码的 PHP 数组转换为 Javascript 中的数组? [复制]