0

私は正直に言うと、オブジェクトの学習を始めたばかりで、行き詰まっています。

オブジェクトの配列をループして、それぞれの名前と説明を表示したいと思います。ただし、何も表示されないか、最初にすべての名前が表示され、次にすべての説明が表示されます。

APIからオブジェクトに情報をプルしています:

// get tasks
foreach($tasksList->items  as $task_details) {
    $tasks_name[$task_details->id]=$task_details->name;
    $tasks_desc[$task_details->id]=$task_details->description;
    $tasks_details[$task_details->id]=$task_details->id;
    $tasks_progress[$task_details->id]=$task_details->progress;
}

foreach($tasks_name as $taskid=>$my_task_name) {
    echo "Task_Name: " . $my_task_name . "</br>";
    $task_id = $task_details->id;

    foreach($tasks_desc as $taskid1=>$my_task_desc) {
        if($taskid==$task_details->id) {
            echo "Task_Desc: " . $my_task_desc . "</br>";   
        }
    }   
}

今私が理解していないのは、最初のforeachループ内では、i = 0の間のwhileループのようなもので、$ tasks_name [0]、次に$tasks_name[1]などをチェックします。

ただし、現在のループでIDが何であるかを把握する方法がわからないため、現在のループの説明のみを出力し、すべてを表示しないように指示できます。

正直、これを別の例からコピーしていますが、よくわかりません。私はオブジェクトをもっと研究するつもりですが、これは私の現在のコードを妨げています:

foreach($tasks_desc as $taskid1=>$my_task_desc)

私はそれがすべてをループして$tasks_desc値を割り当てていることを理解しています$my_task_descが、その重要性は$taskid何ですか?

初心者の質問でごめんなさい。:)

4

2 に答える 2

1

2つのループは必要ありません。各オブジェクトの名前と説明を表示するには、1つのループで十分です。

foreach($tasksList->items  as $task_details) {
    echo 'name: ', htmlspecialchars($task_details->name);
    echo ', description: ', htmlspeciachars($task_details->description);
}

(最初にすべてのオブジェクトフィールドを独自の配列に格納する理由もわかりませんか?)

于 2012-09-01T14:40:22.567 に答える
1

これはうまく書かれていません。チュートリアルの場合は、別のチュートリアルに進みます。それまたは使用されている行のいずれかが省略task_idされました。

とにかく、tasks_nameIDによってインデックス付けされたタスクの配列です。したがって、2番目のブロックの外側のループはその配列のキー/値をループします(IDはキーですtaskid。上記の最初のループでによって割り当てられ$task_details->idました)。

2番目のループはすべてのタスクを再度実行しますが、今回task_descは名前ではなく説明を使用します。task_desc以前のIDと一致するIDを持つを見つけようとしていますtask_name(これにより同じタスクになります)。

ただし、すべてのエントリ(名前、説明など)を、それぞれを独自の配列に格納するのではなく、IDでインデックス付けされた1つの配列に格納するだけでよいため、これは不要です。

(これは最初のループです):

foreach($tasksList->items  as $task_details) {
   $all_tasks[$task_details->id]['name'] = $task_details->name;
   $all_tasks[$task_details->id]['desc'] =$task_details->description;
   // Don't need the ID again; it's the key
   $all_tasks[$task_details->id]['progress'] = $task_details->progress;
}

ただし、必要なときに繰り返すことができるため、これtasksList->items行う必要はありません。

于 2012-09-01T14:43:07.497 に答える