bool BaseVector::OffsetIsset(ObjectData* obj, TypedValue* key) { assert(key->m_type != KindOfRef); auto vec = static_cast<BaseVector*>(obj); TypedValue* result; if (key->m_type == KindOfInt64) { result = vec->get(key->m_data.num); } else { throwBadKeyType(); result = nullptr; } return result ? !cellIsNull(tvToCell(result)) : false; }
bool BaseMap::OffsetIsset(ObjectData* obj, const TypedValue* key) { assert(key->m_type != KindOfRef); auto map = static_cast<BaseMap*>(obj); TypedValue* result; if (key->m_type == KindOfInt64) { result = map->get(key->m_data.num); } else if (isStringType(key->m_type)) { result = map->get(key->m_data.pstr); } else { throwBadKeyType(); result = nullptr; } return result ? !cellIsNull(result) : false; }