2013-10-22 57 views
0

我有JSON數組如下:
排序上的用戶選擇的標準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()嘗試,但我不能得到答案
任何幫助將是明顯的。 在此先感謝

回答

0

你是不是能夠使用usort();因爲你json_decode();會返回一個對象,而不是一個數組。

要解決這個問題,您可以使用第二個可選的boolean這將指示returntype。 默認情況下這是false,如果設置爲true,json解碼將返回一個數組,然後您可以使用usort();

例如

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

但是請注意,填充時對象達到50%(我相信)比數組快。 對於一個小應用程序來說,這並不明顯,但是如果您的應用程序吸引了成千上萬的訪問者,那麼我會看看是否有對象的usort();