我有如下json数组:
{
"class": [
{
"name":"A",
"std":"5"
},
{
"name":"B",
"std":"4"
}, {
"name":"C",
"std":"6"
}, {
"name":"D",
"std":"9"
},{
"name":"Z",
"std":"3"
}, {
"name":"H",
"std":"0"
}, {
"name":"I",
"std":"1"
}
]
}
我已经解码了数组并通过以下代码以表格格式显示它:
$file=getcwd()."/test1.json";
echo $file;
if (file_exists($file)) {
$t=file_get_contents(($file));
$t=json_decode($t);
echo "<pre>";
echo "<table>";
$default=$t->class;
if(isset($t->class) && !empty($t->class)):
foreach($t->class as $value):
arsort($value);
$vaule=(object) $value;
echo "<tr><td>$value->name</td><td>$value->std</td></tr>";
endforeach;
endif;
echo "</table>";
echo "The file exists";
}
else {
echo "The file does not exist";
}
现在它想根据用户从下拉框中的选择对数组进行排序,如下所示:
<form action="jason.php" method="POST">
<select name="sort">
<option value="asc">ASCENDING</option>
<option value="desc">DESCENDING</option>
</select>
<select name="sortby">
<option value="name">NAME</option>
<option value="std">STANDARD</option>
</select>
<input type="submit" value="Save"/>
</form>
我试过使用usort()
但我无法得到答案
任何帮助都是可观的。提前致谢
您无法使用 usort();
,因为您的json_decode();
将返回对象而不是数组。
要解决此问题,您可以使用第二个可选boolean
,它将指示返回类型。默认情况下,这是假的,如果设置为 true,json 解码将返回一个数组,然后您可以使用该数组usort();
。
例如
$t = json_decode($t, true); // returns array
但是请注意,对象在填充时比数组快 50%(我相信)。对于小型应用程序,这并不明显,但是如果您的应用程序吸引了成千上万的访问者,我会查看是否有对象的usort();
。