Есть сессия, в которую необходимо добавить значения по условию. Если ключ существует,то добавить к текущему ключу значение, если его не существует то, создать пару ключ и значение.
foreach($_SESSION['PRODUCTS_IN_COMPARED']['SECTIONS'] as $secId => $val)
{
if($secId == $curSecId)
{
$checkSection = true;
break;
}
}
if( $checkSection )
{
$_SESSION['PRODUCTS_IN_COMPARED']['SECTIONS'][$curSecId][] = $prodId;
}
else
{
$_SESSION['PRODUCTS_IN_COMPARED']['SECTIONS'] = ["{$curSecId}" => $prodId];
}
Проблема возникает, когда ключ есть. Fatal error: [] operator not supported for strings in . Подскажите, как исправить?
Если в SECTIONS
хранятся пары ключ-значение, то так:
$_SESSION = [
'PRODUCTS_IN_COMPARED' => [
'SECTIONS' => [
'secId' => 'val'
]
]
];
$prodId = 'prodIt';
save('secId', $prodId);
var_export($_SESSION);
/*
array (
'PRODUCTS_IN_COMPARED' =>
array (
'SECTIONS' =>
array (
'secId' => 'prodIt',
),
),
)
*/
save('new', $prodId);
var_export($_SESSION);
/*
array (
'PRODUCTS_IN_COMPARED' =>
array (
'SECTIONS' =>
array (
'new' => 'prodIt',
),
),
)
*/
function save($curSecId, $prodId) {
$checkSection = false;
foreach($_SESSION['PRODUCTS_IN_COMPARED']['SECTIONS'] as $secId => $val)
{
if($secId == $curSecId)
{
$checkSection = true;
break;
}
}
if( $checkSection )
{
$_SESSION['PRODUCTS_IN_COMPARED']['SECTIONS'][$curSecId] = $prodId;
}
else
{
$_SESSION['PRODUCTS_IN_COMPARED']['SECTIONS'] = ["{$curSecId}" => $prodId];
}
}
Если в SECTION
хранятся ключи с массивом значений, то так:
<?php
$_SESSION = [
'PRODUCTS_IN_COMPARED' => [
'SECTIONS' => [
'secId' => [
'val'
]
]
]
];
$prodId = 'prodIt';
save('secId', $prodId);
var_export($_SESSION);
/*
array (
'PRODUCTS_IN_COMPARED' =>
array (
'SECTIONS' =>
array (
'secId' =>
array (
0 => 'val',
1 => 'prodIt',
),
),
),
)
*/
save('new', $prodId);
var_export($_SESSION);
/*
array (
'PRODUCTS_IN_COMPARED' =>
array (
'SECTIONS' =>
array (
'secId' =>
array (
0 => 'val',
1 => 'prodIt',
),
0 =>
array (
'new' =>
array (
0 => 'prodIt',
),
),
),
),
)
*/
function save($curSecId, $prodId) {
$checkSection = false;
foreach($_SESSION['PRODUCTS_IN_COMPARED']['SECTIONS'] as $secId => $val)
{
if($secId == $curSecId)
{
$checkSection = true;
break;
}
}
if( $checkSection )
{
$_SESSION['PRODUCTS_IN_COMPARED']['SECTIONS'][$curSecId][] = $prodId;
}
else
{
$_SESSION['PRODUCTS_IN_COMPARED']['SECTIONS'][] = ["{$curSecId}" => [$prodId]];
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
никак не могу вкурить, что я должен выловить в на URI, указанном для уведомленийПлатежи проходят, вот такой код
Почему фото не загружаются в директорию? Я даже проверил настройки php и пункт file_uploads имеет значение on
При запуске, программа должна рисовать короткую линию по середине экрана (Поверх всех программ)Линия рисуется, все хорошо, но очень сильно...
Увидел недавно оператор <=> в чужом коде и испытал культурный шокЧто за зверь, что он делает и когда использовать?