【问题标题】:Sorting ArrayObject by key's value按键值对数组对象进行排序
【发布时间】:2018-06-26 04:34:27
【问题描述】:

我在 JSON 文件中有这些数据:

{
"1011459447787610113": {
    "cot": "negative",
    "id": "1011459447787610113",
    "name": "Mustafa",
    "location": "Lyon, France",
},
"1011459423024316417": {
    "cot": "positive",
    "id": "1011459423024316417",
    "name": "\u0627\u0644\u0639\u0627\u0634\u0642",
    "location": "",

},
"1011459422265192449": {
    "cot": "negative",
    "id": "1011459422265192449",
    "name": "Alison Bing",
    "location": "California\/Italy\/Mideast",
},
}

我正在尝试通过名为 cot 的键对其进行排序,它应该对所有数组进行排序,例如“负数”。

我尝试使用此代码:

$get = json_decode(file_get_contents('d.json', true));
usort($get, function($a, $b)
{
    return strcmp($a->cot, $b->cot);
});

foreach ($get as $key => $value) {
  echo '<div class="card v1card">';
  echo "$value->cot :<a href='https://twitter.com/$value->user_screen_name' target='_blank'><div class='card-header' style='padding: 5px 5px;'><img src='$value->avatar' style='border-radius: 30px !important;-webkit-box-shadow: -1px 0px 10px -5px rgba(0,0,0,0.56);-moz-box-shadow: -1px 0px 10px -5px rgba(0,0,0,0.56);box-shadow: -1px 0px 10px -5px rgba(0,0,0,0.56);' width='30' height='30'><b> $value->name</b><small class='text-muted' style='float:right;margin: 5px 0px 0px 0px;'>$value->location</small></div></a>";
  echo "<a href='https://twitter.com/$value->user_screen_name/status/$value->id' ><div style='padding: 5px 3px 5px 6px;'> $value->post_text</div></a>";
  echo "</div>";
};

我也试过这个:

    $get = json_decode(file_get_contents('d.json', true));

    foreach ($get as $key => $value) {
      usort($get, function($a, $b)
      {
          return strcmp($a->cot, $b->cot);
      });
      echo '<div class="card v1card">';
      echo "$value->cot :<a href='https://twitter.com/$value->user_screen_name' target='_blank'><div class='card-header' style='padding: 5px 5px;'><img src='$value->avatar' style='border-radius: 30px !important;-webkit-box-shadow: -1px 0px 10px -5px rgba(0,0,0,0.56);-moz-box-shadow: -1px 0px 10px -5px rgba(0,0,0,0.56);box-shadow: -1px 0px 10px -5px rgba(0,0,0,0.56);' width='30' height='30'><b> $value->name</b><small class='text-muted' style='float:right;margin: 5px 0px 0px 0px;'>$value->location</small></div></a>";
      echo "<a href='https://twitter.com/$value->user_screen_name/status/$value->id' ><div style='padding: 5px 3px 5px 6px;'> $value->post_text</div></a>";
      echo "</div>";
    };

我不断收到类似的错误

usort() 期望参数 1 是数组,给定对象orusort() 期望参数 1 是数组,给定字符串

有什么想法吗?

【问题讨论】:

  • 我假设你也想要uasort,而不仅仅是usort。除非您可以接受丢失实际密钥?

标签: php arrays json object


【解决方案1】:

您的语法不正确,它应该是 json_decode(..., true); 以使其成为一个数组,但是您将 true 作为参数传递给了 file_get_contents,

$get = json_decode(file_get_contents('d.json', true));

应该是

$get = json_decode(file_get_contents('d.json'), true);

【讨论】:

    猜你喜欢
    • 2020-07-11
    • 2021-06-06
    • 1970-01-01
    • 2021-10-05
    • 2021-10-30
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多