Laravel - PHP array_push создает пронумерованные индексы для Ajax - PullRequest
0 голосов
/ 17 мая 2018

У меня есть запрос ajax, который обновит определенную статистику на странице.Мой контроллер ajax выглядит следующим образом:

   public function getStats (Request $request) {

    $now = new DateTime();
    $stats = [];

    $remindersCount = Reminder::where('created_by', '=', Auth::user()->id )
                        ->where('date', '<=', $now)
                        ->whereNull('deleted_at')
                        ->count();

    array_push($stats,array("remindersCount"=>$remindersCount));

    $Name= Auth::user()->name;

    array_push($stats,array("Name"=>$Name));

    .... more queries and array_push ...

    return response()->json((object) $stats);

ответ, полученный javascript:

{"0":{"remindersCount":1},"1":{"Name":"Ahmed"},"2":{"favoritesCount":1},
"3":{"myCallCount":13},"4":{"totalCalls":13},"5":{"totalClients":7},
"6":{"sysVersion":"1.0"}}

Так что в Javascript я не могу использовать reponse.remindersCount для доступа к его значению, я должен использоватьresponse[0].remindersCount.

Я знаю, что причина в том, что array_push добавляет числовые индексы в php.Как я могу создать простой {{key,value},{key,value}} объект без чисел?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Если вы определите свой массив в конце, когда у вас есть все переменные, вы можете использовать этот синтаксис:

$stats = [
   'remindersCount => $remindersCount,
   'name' => $Name,
   ....
];

, если вам нужно сделать это прежде, чем вы сможете использовать этот синтаксис:

$stats['remindersCount] = $remindersCount;
$stats['name] = $Name;
0 голосов
/ 17 мая 2018

Измените его на:

$now = new DateTime();
$stats = [];

$remindersCount = Reminder::where('created_by', '=', Auth::user()->id )
                    ->where('date', '<=', $now)
                    ->whereNull('deleted_at')
                    ->count();

$stats['remindersCount'] = $remindersCount;
$stats['name'] = Auth::user()->name;

.... more queries ...

return response()->json($stats);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...