0

我有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(),但我无法得到答案
任何帮助都会很明显。提前致谢

4

1 回答 1

0

您无法使用usort();,因为您json_decode();将返回一个对象而不是数组。

要解决此问题,您可以使用第二个可选的boolean,它将指示返回类型。默认情况下这是 false,如果设置为 true,json decode 将返回一个数组,然后您可以使用该数组usort();

例如

$t = json_decode($t, true); // returns array

但是请注意,对象在填充时比数组快 50%(我相信)。对于一个小型应用程序,这并不明显,但如果您的应用程序吸引了成千上万的访问者,我会看看是否有usort();for 对象。

于 2013-10-22T10:09:56.853 回答