natsort() が json データをソートするとエラーが発生します。解決

WBOY
リリース: 2016-06-13 13:30:43
オリジナル
1202 人が閲覧しました

natsort() が json データをソートするとエラーが発生します。

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->$json = '[{"name":"a1"},{"name":"a10"},{"name":"a12"},{"name":"a3"},{"name":"a5"},{"name":"b21"},{"name":"b2"},{"name":"b11"}]';
natsort($json);
$data = json_decode($json);
foreach ($data as $row) {
    echo $row->name.'<br />';//
}
ログイン後にコピー


警告メッセージが表示されるのはなぜですか: natsort() はパラメーター 1 が配列であることを期待しており、d:wwwtest.php で指定された文字列ですか?
さらにnatsort() と strnatcmp() の違いは何ですか?
ありがとうございます。


-----解決策---------
natsort は配列ソート関数であり、文字
には使用できません。
------解決策---------
PHP コード
$json = '[{"名前":"a1"},{"名前":"a10"},{"名前":"a12"},{"名前":"a3"},{"名前": "a5"},{"名前":"b21"},{"名前":"b2"},{"名前":"b11"}]';
$data = json_decode($json);
usort($data, 'cmp');
関数 cmp($a, $b) {
    if ($a->name == $b->name) は 0 を返します。
    $a->名前 > $b->名前 1 : -1; を返します。
}

foreach ($data as $row) {
    echo $row->name.'<br />';//
<div class="clear"></div>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート