112 lines
2.2 KiB
PHP
Executable File
112 lines
2.2 KiB
PHP
Executable File
<?php
|
|
|
|
/**
|
|
* Swift Mailer Array Iterator Interface
|
|
* Please read the LICENSE file
|
|
* @author Chris Corbyn <chris@w3style.co.uk>
|
|
* @package Swift
|
|
* @license GNU Lesser General Public License
|
|
*/
|
|
|
|
require_once dirname(__FILE__) . "/../ClassLoader.php";
|
|
Swift_ClassLoader::load("Swift_Iterator");
|
|
|
|
/**
|
|
* Swift Array Iterator Interface
|
|
* Iterates over a standard PHP array.
|
|
* @package Swift
|
|
* @author Chris Corbyn <chris@w3style.co.uk>
|
|
*/
|
|
class Swift_Iterator_Array implements Swift_Iterator
|
|
{
|
|
/**
|
|
* All keys in this array.
|
|
* @var array
|
|
*/
|
|
protected $keys;
|
|
/**
|
|
* All values in this array.
|
|
* @var array
|
|
*/
|
|
protected $values;
|
|
/**
|
|
* The current array position.
|
|
* @var int
|
|
*/
|
|
protected $pos = -1;
|
|
|
|
/**
|
|
* Ctor.
|
|
* @param array The array to iterate over.
|
|
*/
|
|
public function __construct($input)
|
|
{
|
|
$input = (array) $input;
|
|
$this->keys = array_keys($input);
|
|
$this->values = array_values($input);
|
|
}
|
|
/**
|
|
* Returns the original array.
|
|
* @return array
|
|
*/
|
|
public function getArray()
|
|
{
|
|
return array_combine($this->keys, $this->values);
|
|
}
|
|
/**
|
|
* Returns true if there is a value after the current one.
|
|
* @return boolean
|
|
*/
|
|
public function hasNext()
|
|
{
|
|
return array_key_exists($this->pos + 1, $this->keys);
|
|
}
|
|
/**
|
|
* Moves to the next array element if possible.
|
|
* @return boolean
|
|
*/
|
|
public function next()
|
|
{
|
|
if ($this->hasNext())
|
|
{
|
|
++$this->pos;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
/**
|
|
* Goes directly to the given element in the array if possible.
|
|
* @param int Numeric position
|
|
* @return boolean
|
|
*/
|
|
public function seekTo($pos)
|
|
{
|
|
if (array_key_exists($pos, $this->keys))
|
|
{
|
|
$this->pos = $pos;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
/**
|
|
* Returns the value at the current position, or NULL otherwise.
|
|
* @return mixed.
|
|
*/
|
|
public function getValue()
|
|
{
|
|
if (array_key_exists($this->pos, $this->values))
|
|
return $this->values[$this->pos];
|
|
else return null;
|
|
}
|
|
/**
|
|
* Gets the current numeric position within the array.
|
|
* @return int
|
|
*/
|
|
public function getPosition()
|
|
{
|
|
return $this->pos;
|
|
}
|
|
}
|