0

私はphpが初めてです。チケットをチェックし、このチケット データを Google スプレッドシートに出力する foreach ループがあります。他の foreach ループは古いチケット ID を格納しますが、新しいチケット ID を古いチケット ID 配列と比較し、存在する場合は削除して追加する必要があります。新しいチケットデータ。古いチケット ID と新しい 1 を比較する際に問題が発生しました。これを行う方法についてアドバイスをお願いします。ありがとう

  foreach ($result->tickets as $ticket)
  {
    // For each for old ticket id's
    foreach ($result->tickets as $oldticket)
    {
           $oldid = $oldticket->id;
    }

    $row = array
    (
          "Ticket ID" => $ticket->id,
          "Ticket Title" => $ticket->title,
          "Created On" => $month_created_on,
          "Solved On" => $solved_on ,
          "Status" => $ticket->status,
          "Time Spent" => $ticket->time_spent,
          "Assigned To" => $ticket->assigned_to->full_name,
          "Mojo Number" => $ticket->assigned_to->mojo_number 
      );

    if ($ticket->id ==  $oldid){
                $ss->deleteRow($row);
    }
    $ss->addRow($row);

    return $row;
  }

前もって感謝します。

4

5 に答える 5

2

あなたが達成しようとしていることはあまり明確ではないので、これは答えるのが難しいものです.

通常、ネストされた foreach は次のようになります。

foreach($result as $key => $value){
    foreach($value as $subKey => $subValue){

       //code here while still being able to access $key,$value from the top foreach

     }//foreach

     //code here what you want to do per lower level grouping, ie the second foreach

}//foreach
于 2012-05-08T09:35:31.403 に答える
1

あなたはこのようなことをすべきです

foreach ($result->tickets as $ticket)
{
    // For each for old ticket id's
    foreach ($ticket as $oldticket)
    {
        $oldid = $oldticket->id;
    }

    $row = array
    (
        "Ticket ID" => $ticket->id,
        "Ticket Title" => $ticket->title,
        "Created On" => $month_created_on,
        "Solved On" => $solved_on ,
        "Status" => $ticket->status,
        "Time Spent" => $ticket->time_spent,
        "Assigned To" => $ticket->assigned_to->full_name,
        "Mojo Number" => $ticket->assigned_to->mojo_number 
    );

    if ($ticket->id ==  $oldid){
        $ss->deleteRow($row);
    }
    $ss->addRow($row);

    return $row;
}
于 2012-05-08T09:32:24.977 に答える
1

コードを次のように書き換えます。

  foreach ($result->tickets as $ticket)
  {

    $row = array
    (
          "Ticket ID" => $ticket->id,
          "Ticket Title" => $ticket->title,
          "Created On" => $month_created_on,
          "Solved On" => $solved_on ,
          "Status" => $ticket->status,
          "Time Spent" => $ticket->time_spent,
          "Assigned To" => $ticket->assigned_to->full_name,
          "Mojo Number" => $ticket->assigned_to->mojo_number 
      );
    // For each for old ticket id's
    foreach ($result->tickets as $oldticket)
    {
        $oldid = $oldticket->id;

        if ($ticket->id ==  $oldid){
                $ss->deleteRow($row);
        }
    }
    $ss->addRow($row);

    return $row;
  }
于 2012-05-08T09:34:53.643 に答える
1
$aOld = array(); // array to save your old tickets.

foreach ($result->tickets as $ticket)
{
  $aRow = array(
      "Ticket ID" => $ticket->id,
      "Ticket Title" => $ticket->title,
      "Created On" => $month_created_on,
      "Solved On" => $solved_on ,
      "Status" => $ticket->status,
      "Time Spent" => $ticket->time_spent,
      "Assigned To" => $ticket->assigned_to->full_name,
      "Mojo Number" => $ticket->assigned_to->mojo_number 
  );
  if (in_array($ticket->id, $aOld)){ // if we had such id, so delete this row, else add it
    $ss->deleteRow($row);
  } else {
    $ss->addRow($row);
    $aOld[] = $ticket->id;
  }
//  return $row; Why this is here? 
}
于 2012-05-08T09:42:02.853 に答える
1

古いチケット ID 値を 1 つの配列に保持できます。次に、次のように in_array() 関数を使用します。

//Compose old ticket group.
$old_tickets = array();

// Add an old ticket id into old ticket id group
$old_tickets[] = $old_ticket_id;

//When to fetched new ticket ids, inside of loop, check if ticket id is already existing $old_tickets

if(in_array($ticket_id, $old_tickets)) { 
    // Do something, remove a row process in your case.
}

まあ、これはアントンのものと同じ答えだと思います。:-)

于 2012-05-08T10:00:55.697 に答える