私はこのようなAPI呼び出しからこのオブジェクトの配列を返します。その$結果(注)$結果と配列の配列である[データ] ToDoリストのオブジェクトを保持し、その結果、[成功] API呼び出しの状態保持:私はusort罰金で配列をソートして、私が頼るたいphp unsetを使ってforeachループ内の項目を参照する
array(9) { [0]=> object(stdClass)#3 (5) { ["todo_id"]=> string(10) "1480430478" ["title"]=> string(13) "Check Printer" ["description"]=> string(8)
"Room 233" ["due_date"]=> string(10) "11/29/2016" ["is_done"]=> string(4) "true" } [1]=> object(stdClass)#4 (5) { ["todo_id"]=> string(10) "148043046" ["title"]=> string(18) "Doctor Appointment" ["description"]=> string(7)
"@4pm. " ["due_date"]=> string(10) "11/30/2016" ["is_done"]=> string(4) "true" }
etc..
を"is_done"フィールドに入力し、日時順にtodoリストの一番下に置きます。これを行うにはPHPは次のとおりです。私が午前
//Sort by is_done
foreach($result[data] as $arrayElement) {
foreach($arrayElement as $valueKey => $value) {
if(($valueKey == 'is_done') && ($value == 'true')){
$temp = $arrayElement;
//delete this particular object from the $array
unset($result[data][$arrayElement]);
array_push($result[data], $temp);
}
}
}
問題は私の完了した項目が配列の末尾になりましたですが、彼らは元の位置のままでもあります。設定が解除されていません。私は$ result [data]項目を参考にして、すべてのバリエーションを試してみました。これはおそらく単純なものですが、可能であれば助けが必要です。このサイトをグーグルでチェックしてみると、このような状況では未設定の例はありません。前もって感謝します。
アップデート:私は、メインプログラムで
//json_decode the result
$result = @json_decode($result);
//check if we're able to json_decode the result correctly
if ($result == false || isset($result->success) == false) {
throw new Exception('Request was not correct');
}
//if there was an error in the request, throw an exception
if ($result->success == false) {
throw new Exception($result['errormsg']);
}
//if everything went great, return the data
return $result->data;
}
、その後の操作を行い、コールの終了時
object(stdClass)#3 (6) { ["2"]=> object(stdClass)#4 (5) { ["todo_id"]=> int(1480698596) ["title"]=> string(7) "Test #4" ["description"]=> string(4) "test" ["due_date"]=> string(10) "12/02/2016" ["is_done"]=> string(5) "false" } ["3"]=> object(stdClass)#5 (5) { ["todo_id"]=> string(10) "1480617975" ["title"]=> string(13) "Check Printer" ["description"]=> string(4)
"Test" ["due_date"]=> string(10) "12/06/2016" ["is_done"]=> string(5) "false" } ["5"]=> object(stdClass)#6 (5) { ["todo_id"]=> int(1481136023) ["title"]=> string(9) "Todo item" ["description"]=> string(7) "test123" ["due_date"]=> string(10) "01/19/2017" ["is_done"]=> string(5) "false" } etc...
: APIは現在、このデータ構造を返しているcolburtonの溶液を塗布した後、私は$結果を
$result = $todo_items[0];
として参照しています
これは、ここで致命的なエラーが発生する場所です。
アップデートII: は、あなたがその配列
$result['data'] = array_values($result['data']);
のインデックスを再作成する必要があることを追加したい私は、これはjson_decodeのバグであることhereをお読みください。助けてくれてありがとう....
ありがとう。しかし、私は "$ result = $ todo_items [0];と$ resultを参照している私のtodo_clientプログラムの91行目で、"致命的なエラー:配列として型stdClassのオブジェクトを使うことはできません "私はこれの前にjson_decodeを使います。私はどこかで項目を削除し、json_decodeを使って配列を再インデックスする必要があります。 – alan
array_valuesを使用して「再インデックスする」ことができます。例えば。 $ result ['data'] =配列の値($ result ['data']);ループの後に。 – colburton