Тригонометрический подход, просто потому, что функции 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
Попытайтесь, я работал для меня. Перенесите массив в новый массив с авто ключами:
/* 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']);
В PHP существуют только массивы, которые используются как для ассоциативных, так и для численных индексированных карт / списков / массивов. Javascript / JSON имеет два разных понятия: числовые индексированные массивы ([...]
) и карты объектов ({ foo : ... }
). Для PHP json_encode
, чтобы решить, что использовать при кодировании массива, есть некоторая логика за кулисами. Как правило, если ключи массива смежны и все численные, массив кодируется в массив JSON ([...]
). Если есть даже один ключ не в порядке или нечисловой ключ, вместо него используется объект JSON.
Почему ваши манипуляции с массивом, в частности, запускают объект, я не знаю. Чтобы этого избежать, вы можете сбросить ключи массива, чтобы убедиться, что они численно, смежно проиндексированы:
$_SESSION['cart_items']['cartitems'] = array_values($_SESSION['cart_items']['cartitems']);