1

私はかなりのグーグルをしましたが、うまくいくものを見つけることができませんでした.

私が今何をしているのかを全体的に把握するために、API にアクセスし、オブジェクトとして情報を取得しています。コメントと添付ファイルがあり、これらは別々の配列にあります。

やりたいことは、コメントと添付ファイルを別々ではなく、日時順にまとめて表示することです。

最善の方法は、コメント配列を介してループを作成し、次に添付ファイル配列を介してループを作成し、両方を結合して日付 (エポック) で並べ替え、マージされたループ全体をループして、必要なものをエコーすることだと考えました。それはいくつかのコンテキストを提供するはずです。今はコメント用の多次元配列を作成したいだけで、残りを理解できます。

$comments_holder = array();

//total number of comments in the array     
$comment_total = $issue_json->fields->comment->total -1;
$i=1;
while ($i <= $comment_total)
    {
    //this is the date,time and timezone info for each comment
    $raw_date = $issue_json->fields->comment->comments[$i]->updated;

    $comments_holder[$i] = array();

    //convert_sql_time just converts from 2012-11-04T16:33:00.936+600 into epoch time so i can sort the results later based on date
    $comments_holder[$i]['comments_date'] = convert_sql_time($raw_date); 
    $comments_holder[$i]['comments_displayName'] = $issue_json->fields->comment->comments[$i]->author->displayName;
    $comments_holder[$i]['comments_body'] = $issue_json->fields->comment->comments[$i]->body;
    }
4

1 に答える 1

3

すべてがデータに問題がなければ、このコードはそのような配列を構築するのに十分です:

$comments = $issue_json->fields->comment->comments;
$result = array();

foreach ($comments as $comment) {
  $result[] = array(
    'comments_date' => convert_sql_time($comment->updated),
    'comments_displayName' => $comment->author->displayName,
    'comments_body' => $comment->body,
  );
}

print_r($result);
  • comment->comments が配列の場合、そのカウントを個別に保持する必要はありません。
  • foreach は配列を反復処理するのに十分であり、配列インデックスを計算するために別の変数を保持する必要はありません。
  • [] 表記は自動的に配列インデックスを増加させ、配列を直接割り当てるとうまくいきます (つまり、マルチ ディム配列になります)。
于 2012-11-24T22:21:03.517 に答える