как я могу избежать json_encode добавления ключевых значений в мои объекты массива? [Дубликат]

Тригонометрический подход, просто потому, что функции sin и cos являются классными.

>>> import math
>>> def generator01():
...     n=0
...     while True:
...         yield abs( int( math.cos( n * 0.5 * math.pi  ) ) )
...         n+=1
... 
>>> g=generator01() 
>>> g.next()
1
>>> g.next()
0
>>> g.next()
1
>>> g.next()
0

1
задан jmort253 18 May 2012 в 06:58
поделиться

2 ответа

Попытайтесь, я работал для меня. Перенесите массив в новый массив с авто ключами:

/* Remove the item */
foreach ($_SESSION['cart_items']['cartitems'] as $key => $product) {
    if ($product['cartid'] == $cartid) {
        unset($_SESSION['cart_items']['cartitems'][$key]);
    }
}
$var=array();
foreach($_SESSION['cart_items']['cartitems'] as $key => $product) {
        $var['cart_items']['cartitems'][] = $product;
}
echo json_encode($var['cart_items']);
0
ответ дан catalin87 27 August 2018 в 01:31
поделиться

В PHP существуют только массивы, которые используются как для ассоциативных, так и для численных индексированных карт / списков / массивов. Javascript / JSON имеет два разных понятия: числовые индексированные массивы ([...]) и карты объектов ({ foo : ... }). Для PHP json_encode, чтобы решить, что использовать при кодировании массива, есть некоторая логика за кулисами. Как правило, если ключи массива смежны и все численные, массив кодируется в массив JSON ([...]). Если есть даже один ключ не в порядке или нечисловой ключ, вместо него используется объект JSON.

Почему ваши манипуляции с массивом, в частности, запускают объект, я не знаю. Чтобы этого избежать, вы можете сбросить ключи массива, чтобы убедиться, что они численно, смежно проиндексированы:

$_SESSION['cart_items']['cartitems'] = array_values($_SESSION['cart_items']['cartitems']);
2
ответ дан deceze 27 August 2018 в 01:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: