Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}