У меня есть массив объектов:
$obj = array(); // add the new items $row = new stdClass(); $row->first = $first; $row->last = $last; $row->phone = $phone; $obj[] = $row;
Теперь, если у меня есть только значение $ last, существует ли способ удалить весь объект $ row без указания каждого ключа / значения? (Если это помогает понять, если это был оператор mysql, это было бы что-то вроде «DELETE * FROM $ obj WHERE $ row-> last = 'Thomas'")
спасибо
Вам нужно знать ключ. Однако, если вы перебираете массив, вы можете его найти.
/* Your original code: */ $obj = array(); // add the new items $row = new stdClass(); $row->first = $first; $row->last = $last; $row->phone = $phone; $obj[] = $row; /* My addition: */ $theOneToDelete = $last; foreach ($obj as $key => $row) { if ($row->last == $theOneToDelete) { unset($obj[$key]); break; } }
с/* Your original code: */ $obj = array(); // add the new items $row = new stdClass(); $row->first = $first; $row->last = $last; $row->phone = $phone; $obj[] = $row; /* My addition: */ $theOneToDelete = $last; foreach ($obj as $key => $row) { if ($row->last == $theOneToDelete) { unset($obj[$key]); break; } }
С некоторыми array_*
может существовать подход, связанный с array_*
, но это array_*
это.
Не unset($row);
что ты хочешь? Но нет необходимости делать это, если вы просто делаете это для сохранения памяти …
foreach ($obj as $key => $value) { if($obj[$key]->last == $last){ unset($obj[$key]); } }
сforeach ($obj as $key => $value) { if($obj[$key]->last == $last){ unset($obj[$key]); } }
К сожалению, я забыл отформатировать свой ответ как код. Я здесь новенький! = Р