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_tImplementations
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);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);
}