在缓存数据中搜索给出数组第一个索引 1

Searching in cache data gives array first index 1

$this->getCachedCategories();
//Above code Stores the data in cache for future use. So, it goes to the database only 
//one time and next time pick the data from cache. So far everything is good.

//I have a search criteria which is in the form of array. I filter above cache data based 
//upon the search criteria and gets the data.
foreach ($userInputsForFilter as $key => $value) {
    $this->Categories = $this->Categories->where($key, $value);
}

这是截图。如果您注意到检索到的数据的第一个索引是 1 而不是 0。实际上第二条记录是在缓存数据被过滤后出现的。

请问为什么搜索缓存数据时会出现这种情况?进入数据库时​​不会发生这种情况。

数组到JSON代码

$CategoryResponse = $this->iCategory->All([], []);
return \Response::json($CategoryResponse, 200);

Laravel 的 Collections 和 PHP 中的一般数组可以关联,这意味着第一个索引可以是不一定为 0 的内容。当转换为JSON 通过 Response::json()return response->json(),它可以被视为一个 object 而不是 JS 中的数组。要处理这个问题,将 Collection 转换为数组,然后通过 PHP 的 array_values() 函数更改为 indexed

$CategoryResponse = $this->iCategory->All([], []);
return response()->json(array_values($CategoryResponse->toArray()), 200);
// Older Laravel syntax
// return \Response::json(array_values($CategoryResponse->toArray()), 200);

在 JSON 响应中,它应该正确显示为以 0 作为第一个索引的数组。