как удалить объект из массива объектов в цикле foreach php
у меня есть users
объект, возвращенный из базы данных, выглядит следующим образом:
[
{
"id":1,
"name":"Bob",
"category":"admin",
"email":"test1@test.com",
"phone":"123456789",
"gender":"male",
},
{
"id":2,
"name":"John",
"category":"user",
"email":"john@test.com",
"phone":"123456789",
"gender":"male",
},
{
"id":3,
"name":"Jane",
"category":"admin",
"email":"jane@test.com",
"phone":"123456789",
"gender":"female",
},
]
теперь я хочу пройти через все users
"объект" и удалить всех пользователей, чьи - это user
так что в результате .
Я хочу сделать это с помощью цикла foreach. пожалуйста, как мне это сделать или какими лучшими способами я могу это сделать?
4 ответов
Я предполагаю, что массив в формате JSON? В любом случае.. Я исправил ваш недействительный JSON, чтобы вы могли видеть, как это делается.
$json = '
[{
"id": 1,
"name": "Bob",
"category": "admin",
"email": "test1@test.com",
"phone": "123456789",
"gender": "male"
}, {
"id": 2,
"name": "John",
"category": "user",
"email": "john@test.com",
"phone": "123456789",
"gender": "male"
}, {
"id": 3,
"name": "Jane",
"category": "admin",
"email": "jane@test.com",
"phone": "123456789",
"gender": "female"
}]
';
$array = json_decode($json, true); //Fixed and converted JSON into PHP Assoc Array
foreach($array as $k=>$v) {
foreach ($array[$k] as $key=>$value) {
if ($key === "category" && $value === "user") { //If Value of 2D is equal to user and cat
unset($array[$k]); //Delete from Array
}
}
}
var_dump($array); //Output Array
выход
array(2) {
[0] => array(6) {
["id"] => int(1)["name"] => string(3)
"Bob" ["category"] => string(5)
"admin" ["email"] => string(14)
"test1@test.com" ["phone"] => string(9)
"123456789" ["gender"] => string(4)
"male"
}[2] => array(6) {
["id"] => int(3)["name"] => string(4)
"Jane" ["category"] => string(5)
"admin" ["email"] => string(13)
"jane@test.com" ["phone"] => string(9)
"123456789" ["gender"] => string(6)
"female"
}
}
редактировать
*как указал @sevavietl в комментариях, если какой-либо другой элемент массива был вызван пользователем, то это будет удалено. Я изменил код, чтобы теперь проверить ключ (категорию), а также Значение. *
предполагая, что массив находится в формате json, код одной строки:
$users = array_filter(json_decode($users), function($user) {
return $user->category != 'user';
});
Если вместо этого уже действительный массив php просто удалите json_decode()
Если вы просто хотите удалить категорию "пользователь", вам просто нужно получить ключ и сделать условие для удаления этой категории и поместить категорию" администратор " в этот новый массив. Взгляните на это:
$json = '
[{
"id": 1,
"name": "Bob",
"category": "admin",
"email": "test1@test.com",
"phone": "123456789",
"gender": "male"
}, {
"id": 2,
"name": "John",
"category": "user",
"email": "john@test.com",
"phone": "123456789",
"gender": "male"
}, {
"id": 3,
"name": "Jane",
"category": "admin",
"email": "jane@test.com",
"phone": "123456789",
"gender": "female"
}]';
$arr = json_decode($json, true);
$newArr = array();
foreach($arr as $key => $value) {
if($value["category"] == "admin") {
$newArr[] = $value;
}
}
echo '<pre>';
print_r($newArr);
echo '</pre>';
ваш вход выглядит так:JSON
, Так что вы можете использовать json_decode
функция, чтобы сделать его массивом, который вы можете foreach
, и вы можете закодировать (json_encode
) это обратно в JSON
Если вы хотите получить на выходе.
решение
ниже код должен быть полезен для вас:
<?php
// $json = output from your db
$json_output = json_decode($json, true);
foreach ($json_output as $user) {
if ($user['category'] == 'admin') { // or it may be $user['category'] != 'user'
$user_output[] = $user;
}
}
print_r($user_output);
print_r(json_encode($user_output, true)); // if you want json output
?>
среда SQL
вы также можете добавить в свой SQL-запрос WHERE
заявление. Это может выглядеть следующим образом:
SELECT * FROM users WHERE category = 'admin'
Of запрос курса зависит от имен, которые у вас есть в таблице. Подробнее о SELECT
запрос вы можете прочитать в инструкции ниже.
инструкции
подробнее о используемых методах вы можете прочитать ниже:
компилятор онлайн
вы можете проверить как он работает здесь