z0ddak
@z0ddak
Просто хороший человек

Как удалить первый элемент из массива?

Необходимо удалить из массива первый элемент.
-
Запрос - index.js:
$.ajax({

        type: 'POST',
        url:  MY_HANDLER_URL,
        data: { 'data_member': 1 },
        success: function(res) {

            console.log(res);
        }
    });


Обработчик - handler.php
if ($_POST['data_member'] == 1) {

	// подключаемся к БД "auth"
	$auth = new Flintstone('auth', [

		'dir'       => './database/',
		'formatter' => new JsonFormatter()
	]);

    // выбираем все записи в таблице
    $data = $auth->getAll();

    // формируем тело ответа
    $table_data = json_encode($data, JSON_FORCE_OBJECT);
    $arr        = json_decode($table_data, true);
    $id         = 0;
    $newJson    = json_encode([

        'rows'  => array_map(

            function ($uid, $el) use (&$id) {

                $el['token_key'] = $uid;
                $el['id']        = $id++;
                return $el;
            },
            array_keys($arr),
            array_values($arr)
        )
    ]);

	// отвечаем...
	echo $newJson;
}


Выводит это:
{
	"rows":[
		{
			"time_stamp":1592422285,
			"sadmin":true,
			"admin":true,
			"token_key":"BZ85GBWEKD2S8LCXNK6H",
			"id":0
		},
		{
			"time_stamp":1592846831,
			"sadmin":false,
			"admin":true,
			"token_key":"3N5QPKAUUFS3NGU37LSA",
			"id":1
		},
		{
			"time_stamp":1593365957,
			"sadmin":false,
			"admin":false,
			"token_key":"KXPJYWQHGLPD39GTFS7Z",
			"id":2
		},
		{
			"time_stamp":1593365960,
			"sadmin":false,
			"admin":false,
			"token_key":"7UZLN2WX7U27BKXER8B9",
			"id":3
		},
		{
			"time_stamp":1593365962,
			"sadmin":false,
			"admin":false,
			"token_key":"UJ2VXVMXWRPNTHBECP3A",
			"id":4
		}
	]
}

Нужно удалить первый элемент массива с проверкой по вложенному значению "token_key" (оно не будет меняться).
5ef979f910248813217419.gif
Удалять необходимо на стороне сервера, разобрать-удалить-собрать и отправить массив.
 
  • Вопрос задан
  • 159 просмотров
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
array_filter — Фильтрует элементы массива с помощью callback-функции

https://www.php.net/manual/ru/function.array-filter.php
Ответ написан
z0ddak
@z0ddak Автор вопроса
Просто хороший человек
Ни array_slice(), ни array_filter() не подошли, тут подробнее.
Реализовал следующим образом, через array_diff_key():
if ($_POST['member'] == 1) {

	// подключаемся к БД "auth"
	$auth = new Flintstone('auth', [

		'dir'       => './database/',
		'formatter' => new JsonFormatter()
	]);

    // выбираем все записи в таблице
    $data = $auth->getAll();

    // формируем тело ответа
    $table_data = json_encode($data, JSON_FORCE_OBJECT);
    $arr        = json_decode($table_data, true);

    // отфильтруем ненужный нам элемент
    $filterOutKeys = array( KEY_NUM );
    $filteredArr = array_diff_key( $arr, array_flip( $filterOutKeys ) );

    $id         = 0;
    $newJson    = [

        'rows'  => array_map(

            function ($uid, $el) use (&$id) {

                $el['token_key'] = $uid;
                $el['id']        = $id++;
                return $el;
            },
            array_keys($filteredArr),
            array_values($filteredArr)
        )
    ];

	// отвечаем...
	echo json_encode($newJson);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Как на счет:
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы