Struct ext_php_rs::ffi::_zend_array[][src]

#[repr(C)]
pub struct _zend_array { pub gc: zend_refcounted_h, pub u: _zend_array__bindgen_ty_1, pub nTableMask: u32, pub arData: *mut Bucket, pub nNumUsed: u32, pub nNumOfElements: u32, pub nTableSize: u32, pub nInternalPointer: u32, pub nNextFreeElement: zend_long, pub pDestructor: dtor_func_t, }

Fields

gc: zend_refcounted_hu: _zend_array__bindgen_ty_1nTableMask: u32arData: *mut BucketnNumUsed: u32nNumOfElements: u32nTableSize: u32nInternalPointer: u32nNextFreeElement: zend_longpDestructor: dtor_func_t

Implementations

Creates a new, empty, PHP hashtable, returned inside a ZBox.

Example
use ext_php_rs::types::ZendHashTable;

let ht = ZendHashTable::new();
Panics

Panics if memory for the hashtable could not be allocated.

Creates a new, empty, PHP hashtable with an initial size, returned inside a ZBox.

Parameters
  • size - The size to initialize the array with.
Example
use ext_php_rs::types::ZendHashTable;

let ht = ZendHashTable::with_capacity(10);
Panics

Panics if memory for the hashtable could not be allocated.

Returns the current number of elements in the array.

Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

ht.push(1);
ht.push("Hello, world");

assert_eq!(ht.len(), 2);

Returns whether the hash table is empty.

Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

assert_eq!(ht.is_empty(), true);

ht.push(1);
ht.push("Hello, world");

assert_eq!(ht.is_empty(), false);

Clears the hash table, removing all values.

Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

ht.insert("test", "hello world");
assert_eq!(ht.is_empty(), false);

ht.clear();
assert_eq!(ht.is_empty(), true);

Attempts to retrieve a value from the hash table with a string key.

Parameters
  • key - The key to search for in the hash table.
Returns
  • Some(&Zval) - A reference to the zval at the position in the hash table.
  • None - No value at the given position was found.
Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

ht.insert("test", "hello world");
assert_eq!(ht.get("test").and_then(|zv| zv.str()), Some("hello world"));

Attempts to retrieve a value from the hash table with an index.

Parameters
  • key - The key to search for in the hash table.
Returns
  • Some(&Zval) - A reference to the zval at the position in the hash table.
  • None - No value at the given position was found.
Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

ht.push(100);
assert_eq!(ht.get_index(0).and_then(|zv| zv.long()), Some(100));

Attempts to remove a value from the hash table with a string key.

Parameters
  • key - The key to remove from the hash table.
Returns
  • Some(()) - Key was successfully removed.
  • None - No key was removed, did not exist.
Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

ht.insert("test", "hello world");
assert_eq!(ht.len(), 1);

ht.remove("test");
assert_eq!(ht.len(), 0);

Attempts to remove a value from the hash table with a string key.

Parameters
  • key - The key to remove from the hash table.
Returns
  • Ok(()) - Key was successfully removed.
  • None - No key was removed, did not exist.
Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

ht.push("hello");
assert_eq!(ht.len(), 1);

ht.remove_index(0);
assert_eq!(ht.len(), 0);

Attempts to insert an item into the hash table, or update if the key already exists. Returns nothing in a result if successful.

Parameters
  • key - The key to insert the value at in the hash table.
  • value - The value to insert into the hash table.
Returns

Returns nothing in a result on success. Returns an error if the key could not be converted into a CString, or converting the value into a Zval failed.

Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

ht.insert("a", "A");
ht.insert("b", "B");
ht.insert("c", "C");
assert_eq!(ht.len(), 3);

Inserts an item into the hash table at a specified index, or updates if the key already exists. Returns nothing in a result if successful.

Parameters
  • key - The index at which the value should be inserted.
  • val - The value to insert into the hash table.
Returns

Returns nothing in a result on success. Returns an error if converting the value into a Zval failed.

Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

ht.insert_at_index(0, "A");
ht.insert_at_index(5, "B");
ht.insert_at_index(0, "C"); // notice overriding index 0
assert_eq!(ht.len(), 2);

Pushes an item onto the end of the hash table. Returns a result containing nothing if the element was sucessfully inserted.

Parameters
  • val - The value to insert into the hash table.
Returns

Returns nothing in a result on success. Returns an error if converting the value into a Zval failed.

Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

ht.push("a");
ht.push("b");
ht.push("c");
assert_eq!(ht.len(), 3);

Checks if the hashtable only contains numerical keys.

Returns

True if all keys on the hashtable are numerical.

Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

ht.push(0);
ht.push(3);
ht.push(9);
assert!(ht.has_numerical_keys());

ht.insert("obviously not numerical", 10);
assert!(!ht.has_numerical_keys());

Checks if the hashtable has numerical, sequential keys.

Returns

True if all keys on the hashtable are numerical and are in sequential order (i.e. starting at 0 and not skipping any keys).

Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

ht.push(0);
ht.push(3);
ht.push(9);
assert!(ht.has_sequential_keys());

ht.insert_at_index(90, 10);
assert!(!ht.has_sequential_keys());

Returns an iterator over the key(s) and value contained inside the hashtable.

Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

for (idx, key, val) in ht.iter() {
//   ^ Index if inserted at an index.
//        ^ Optional string key, if inserted like a hashtable.
//             ^ Inserted value.

    dbg!(idx, key, val);
}

Returns an iterator over the values contained inside the hashtable, as if it was a set or list.

Example
use ext_php_rs::types::ZendHashTable;

let mut ht = ZendHashTable::new();

for val in ht.values() {
    dbg!(val);
}

Trait Implementations

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.