Сортировка ArrayObject по значению ключа - PullRequest
0 голосов
/ 26 июня 2018

У меня есть эти данные в файле 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 будет массивом, объект задан or usort () ожидает, что параметр 1 будет массивом, строка задана

Есть идеи?

1 Ответ

0 голосов
/ 26 июня 2018

Ваш синтаксис неправильный, он должен был быть 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...