2016-04-22 13 views
1

私はサイトをチェックしましたが、この質問に関連するたくさんの回答があります。しかし、私はPHPを学んでいます。それで、私が理解することはかなり難しいです。とにかく 、私は、データベースからデータをフェッチするために、AJAXを使用していますソートjsonまたはPHPの多次元配列データ

$data = array(); 
$data['count'] = $result->num_rows; 
... 
... 
$data['content'][] = array(
        "userid" => $userid, 
        "title" => $title, 
        "slug" => $slug, 
        "download" => $download, 
        "usrtitle" => $usrtitle, 
        "company" => $company, 
        "period" => $period, 
        "email" => $email, 
        "mobile" => $mobile, 
        "fname" => $fname, 
        "lname" => $lname, 
        "address" => $address, 
        "pic" => $pic, 
        "appliedon" => date("d-M-Y", strtotime($appliedon)), 
        "price" => $price 
        ); 
echo json_encode($data);exit; 

。すべてうまくいっていますが、私は価格でデータを並べ替えたいです。ユーザーが同じものを選択したいので、ハードコーディングできません。 ネストされたmysqlクエリがあり、mysqlクエリからデータをソートすることはできません。データは複数のクエリから来ているためです。

データをどのように並べ替えることができるかアドバイスしてください。

私はこの質問を見つけました。How do I Sort a Multidimensional Array in PHP これは私のケースではうまくいきませんか?

おかげ

編集: データベースのテーブル構造。

userid, title, slug,email,mobile,fname,lname,address,picは、ユーザーのテーブルから来ています。 download, usrtitle, company,priceプロフィールテーブルから来ています。 appliedon適用テーブルから来ます。

ここからapplyonテーブルで実行される最初のクエリは、ユーザーIDを取得します。このユーザーIDは、ユーザーおよびプロファイル表で詳細をフェッチするために使用されます。私はここでデータをソートするためにorderby節を使用できるかどうかはわかりません。

+4

mysqlクエリ自体にデータをソート –

+0

あなたのクエリを表示してください。ソートされたデータが表示されます。 – RJParikh

+0

ネストされたmysqlクエリがあり、mysqlクエリでデータをソートすることはできません。データは複数のクエリから来ているためです。 – Ironic

答えて

1

PHP組み込み関数array_multisortこの場合は動作します。

し1.Get下降順に価格で$data['content']をソートするarray_multisort 2.Use $data['content']

$sort_arr = array(); 
foreach($data['content'] as $item) { 
    $sort_arr[] = $item['price']; 
} 

から来る価格の配列:array_multisort利用

//if you want ascending order replace `SORT_DESC` by `SORT_ASC` 
array_multisort($sort_arr, SORT_NUMERIC, SORT_DESC, $data['content']) 

より詳しく、公式ドキュメントを参照してください:あなたはusortを使用し、独自のSORを定義することができますhttp://php.net/manual/en/function.array-multisort.php

+0

あなたの答えをありがとう。投票した。 – Ironic

+0

@CalculatingMachine動作しましたか? –

+0

まだ試していませんでした。私は自分のマシンから離れているので。確認してお知らせします。 – Ironic

1

T機能:

$data = [ 
    ["name" => "A", "price" => 54], 
    ["name" => "B", "price" => 102], 
    ["name" => "C", "price" => 4], 
    ["name" => "D", "price" => 76], 
]; 

echo("UNSORTED <br>\n"); 
print_r($data); 

usort($data, function($a, $b) { 
    return $a["price"] - $b["price"]; 
}); 
echo("\n<br>\n<br>SORTED <br>\n"); 
print_r($data); 

お名前(または他の文字列)で注文したい場合は、例えばstrnatcmpを使用することができます。

usort($data, function($a, $b) { 
    return strnatcmp($a["name"], $b["name"]); 
}); 
+0

あなたの答えをありがとう。投票した。 – Ironic

+0

これはあなたが探しているものですか? – Buksy