如何使用 PHP 为 JSON 创建一个数组?

我想用 PHP 代码创建一个 json 数组:

[
{"region":"valore","price":"valore2"},
{"region":"valore","price":"valore2"},
{"region":"valore","price":"valore2"}
]

我怎么能这么做?

446796 次浏览

小菜一碟: 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_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);

简单: 只需创建一个(嵌套的) PHP 数组并在其上调用 json_encode。数字数组转换成 JSON 列表([]) ,关联数组和 PHP 对象转换成对象({})。例如:

$a = array(
array('foo' => 'bar'),
array('foo' => 'baz'));
$json = json_encode($a);

给你:

[{"foo":"bar"},{"foo":"baz"}]

每次在 php 中创建 json 的最佳方法是首先在关联数组中转换值。

之后,只需使用 json_encode($associativeArray)进行编码。我认为这是在 php 中创建 json 的最佳方式,因为无论何时我们在 php 中获取 sql 查询的结果,大多数时候我们都使用返回一个关联数组的 fetch_assoc函数来获取值。

$associativeArray = array();
$associativeArray ['FirstValue'] = 'FirstValue';

等等。

在那之后。

json_encode($associativeArray);

还可以对 array 使用短注释:

$arr = [
[
"region" => "valore",
"price" => "valore2"
],
[
"region" => "valore",
"price" => "valore2"
],
[
"region" => "valore",
"price" => "valore2"
]
];


echo json_encode($arr);

只要输入这一行就会得到一个 json 数组,

echo json_encode($array);

通常,您使用 json_encode从 IOS 或 Android 应用程序读取数据。所以,除了准确的 json 数组之外,确保不会回显其他任何内容。

这就是我如何在@tdammers 提供的解决方案的帮助下做到的。 下面的行将放置在 foreach 循环中。

$array[] = array('power' => trim("Some value"), 'time' => "time here" );

然后用 json encode 函数对数组进行编码

json_encode(array('newvalue'=> $array), 200)

我创建了一个简单粗糙的 jsonOBJ 类用于我的代码。PHP 不包括 json 函数,比如 JavaScript/Node do。您必须以不同的方式进行迭代,但这可能会有所帮助。

<?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 />";
}

产出:

TestLoc1 < br/> TestLoc2 < br/> TestLoc3

直接进入:

$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();
}