массивы — вызов функций изнутри функций (с аргументами) в переполнении стека

Я строю систему, которая собирает информацию из POST метод и добавляет их в PHP $_SESSION, Основная логика, которой я хочу следовать:

  1. Проверьте метод и вызовите соответствующую функцию
  2. Проверить, если $_SESSION данные уже существуют через функцию
  3. Проверьте, если $post_id переменная уже находится в $_SESSIONмассив через функцию
  4. Основываясь на результатах этих функций, добавьте в массив, создайте новый массив или ничего не делайте

Вот код, который я написал для обработки этой логики до сих пор. Я ищу только add_to_lightbox() Функция работает в первую очередь, а затем перейдет к двум другим.

session_start();

// set variables for the two things collected from the form
$post_id = $_POST['id'];
$method = $_POST['method'];
// set variable for our session data array: 'ids'
$session = $_SESSION['ids'];

if ($method == 'add') {
// add method
add_to_lightbox($post_id, $session);
} elseif ($method == 'remove') {
// remove method
remove_from_lightbox($post_id);
} else ($method == 'clear') {
// clear method
clear_lightbox();
}

function session_exists($session) {
if (array_key_exists('ids',$_SESSION) && !empty($session)) {
return true;
// the session exists
} else {
return false;
// the session does not exist
}
}

function variable_exists($post_id, $session) {
if (in_array($post_id, $session)) {
// we have the id in the array
return true;
} else {
// we don't have the id in the arary
return false;
}
}

function add_to_lightbox($post_id, $session) {
if (!session_exists($session) == true && variable_exists($post_id, $session) == false) {
// add the id to the array
array_push($session, $post_id);
var_dump($session);
} else {
// create a new array with our id in it
$session = [$post_id];
var_dump($session);
}
}

Он застрял в состоянии, когда он всегда add_to_lightbox() и следуя array_push($session, $post_id); каждый раз. Я не уверен, что этот код, который я написал, возможен из-за вложенных функций, и как я могу реорганизовать его, чтобы функциональность работала.

-1

Решение

Коррекция, по-видимому, $ session — это массив идентификаторов.

Проблема в том, что вы модифицируете локальную копию этого массива в функции add_to_lightbox. Вам не нужно специально создавать экземпляр переменной в виде массива, вы можете просто использовать следующее.

$_SESSION['ids'][] = $post_id;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]