ArrayData *ArrayData::dequeue(Variant &value) { if (!empty()) { auto const pos = iter_begin(); value = getValue(pos); ArrayData *ret = remove(getKey(pos), getCount() > 1); // In PHP, array_shift() will cause all numerically key-ed values re-keyed ret->renumber(); return ret; } value = uninit_null(); return this; }
ArrayData *ArrayData::Dequeue(ArrayData* a, Variant &value) { if (!a->empty()) { auto const pos = a->iter_begin(); value = a->getValue(pos); ArrayData *ret = a->remove(a->getKey(pos), a->getCount() > 1); // In PHP, array_shift() will cause all numerically key-ed values re-keyed ret->renumber(); return ret; } value = uninit_null(); return a; }
ArrayData *ArrayData::dequeue(Variant &value) { if (!empty()) { ssize_t pos = iter_begin(); value = getValue(pos); ArrayData *ret = remove(getKey(pos), getCount() > 1); // In PHP, array_shift() will cause all numerically key-ed values re-keyed if (ret) { ret->renumber(); } else { renumber(); } return ret; } value = null; return NULL; }