2015-03-20 2 views
0

Я перебираю массив из $students и удаляю те, которые уже находятся в массиве $enrolled.Удалить объект из массива - объект возвращается вместо массива

$i=0; 
foreach($students as $student) 
{ 
    foreach($enrolled as $enrollment) 
    { 
     if ($enrollment->id == $student->id) 
     { 
      unset($students[$i]); 
     } 
    } 
    $i++; 
} 

return Response::json(array(
    'available' => $students 
)); 

Это оставляет меня следующий вывод:

"available": { 
    "2": { 
     "id": "4" 
     "user_id": "4", 
     "teacher_id": null, 
     "parent_id": "4", 
     "active": "1" 
    } 
} 

То, что я пытаюсь добиться, что available является массив, считая, что один студент. Что я здесь делаю неправильно?

+0

Прошу прощения, но я не понимаю, в чем проблема с выходом. Вы ожидали более одного ученика в * доступном массиве? –

+0

@VitorLima Вывод - это объект с ключом, а не массив. – babbaggeii

+0

Знаете ли вы, что foreach и unset на одном и том же элементе довольно плохо? это невозможно сделать так –

ответ

0
for($i = 0; $i < count($students); $i++) 
{ 
    $student = $students[$i]; 
    foreach($enrolled as $enrollment) 
    { 
     if ($enrollment->id == $student->id) 
     { 
      unset($students[$i]); 
     } 
    } 
} 

return Response::json(array(
    'available' => array_values($students) 
)); 

не использует foreach и unset на тот же элемент, лучше бы for, потому что unset вызывает некоторые проблемы foreach, если вы об этом думаете, как foreach работы (итераторы, ключи, что угодно)

+0

Это все равно дает тот же формат для вывода - т. Е. И объект с ключом, являющимся индексом массива '$ students'. – babbaggeii

+0

@babbaggeii затем использовать 'array_values' обновил мой пост –

0

Массивы Javascript ноль-индексируются, поэтому вы не можете иметь массив с одним элементом и индекс, который не равен нулю.

Чтобы получить что из вашего массива PHP, вам необходимо повторно индексировать его, прежде чем кодировать его:

// re-index the array 
$students = array_values($students); 

return Response::json(array(
    'available' => $students 
)); 

См simple example here.

Смежные вопросы