basket.json
[
{
"item": 13
},
{
"item": 12
}
]
код:
$posted_value = 13;
$basketJson = file_get_contents('basket.json');
$usedBasket = json_decode($basketJson, true);
foreach ( $usedBasket as $basket ) {
foreach ( $basket as $key => $value ) {
if (( $key = array_search($posted_value, $value)) !== false ) {
unset($basket[$key]);
}
}
}
file_put_contents('basket.json', json_encode($usedBasket));
но в файле также остался объект со значением 13. Что не так?
В foreach по умолчанию передаётся копия массива. Что бы получить доступ к исходному массиву, нужно добавить амперсанд в обеих циклах:
foreach ($usedBasket as &$basket)
и
foreach ($basket as $key => &$value)
Если вы изменяете только $basket, то во втором цикле амперсанд можно не добавлять.
Для модификации массива было бы удобнее вместо foreach() использовать for() хотя бы потому, что бы не удалять после цикла оставшиеся ссылки. Например:
$posted_value = 13;
$basketJson = '[
{
"item": 13
},
{
"item": 12
}
]';
$usedBasket = json_decode($basketJson, true);
for ($i = 0, $all = count($usedBasket); $i < $all; $i++) {
if ($usedBasket[$i]['item'] === $posted_value) {
unset($usedBasket[$i]);
}
}
$usedBasket = array_values($usedBasket);
var_dump($usedBasket);
Результат:
array(1) {
[0]=> array(1) {
["item"]=> int(12)
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
при миграции базы постоянно выдает вот такую ошибку, не понимаю что нужно исправить
Всем известно, что в telegram можно создавать ботов, которые будут общаться с юзером, показывая ему различные кнопки