Создаю массив сеансов, который будет использоваться через сайт для каждого пользователя. Как только пользователь меняет настройки, настройки массива сеанса меняются вместе с ним.Поиск значения в массиве в массиве и замена - PHP
создать массив сеанса на нагрузку до страницы:
if (!isset($_SESSION['controller']))
{
$_SESSION['controller'] = array(
'color' => array(
'shell' => 'none',
'graphic-color' => 'none',
'part-color' => 'none'
),
'graphics' => array (
'text' => 'none',
'text-font' => 'none',
'text-style' => 'none',
'graphic' => 'none',
'part' => 'none'
)
);
}
После того, как пользователь изменяет настройки, используя вызов Ajax, я называю .php файл для изменения, которые когда-либо связанный параметр, предполагают, чтобы быть изменена:
JS:
function changeSetting(what, to)
{
$.ajax({
url: "../wp-content/themes/twentytwelve/controller/php/controllerArrayMody.php",
type: "POST",
data: {
'what' : what,
'to' :to
},
success: function() {
}
});
}
what
будет содержать 'оболочку' или 'графический-цвет' и т.д. ... to
будет содержать значение, что s Предположим, что none
изменится.
Теперь из их вот мой код у меня есть для его модификации:
$changeWhat = $_POST['what'];
$to = $_POST['to'];
$newArray = $_SESSION['controller'];
$key = array_search($changeWhat , $_SESSION['controller']); // returns the first key whose value is changeWhat
$newArray[$key][0] = $to; // replace
$_SESSION['controller'] = $newArray;
Вот результат:
Array ([color] => Array ([shell] => none [graphic-color] => none [part-color]
=> none) [graphics] => Array ([text] => none [text-font] => none [graphic] =>
none [part] => none) [0] => Array ([0] => Red-Metallic.png))
Мой вопрос, что я делаю неправильно, что это добавление к конец массива вместо замены, скажем [shell] значение to
, которое позволяет сказать, что это Img.test.png
'$ newArray [$ клавишу [0]]' –
Нет, не работает, он все равно добавляет к концу массива. мой вывод будет ... 'array (..) [0] => Red-Metallic.png [] => Gold-Metallic.png)' –
'var_dump ($ key)' посмотреть, что он содержит и как он может влияет на '$ _SESSION ['controller']' –