本文整理汇总了PHP中SplDoublyLinkedList类的典型用法代码示例。如果您正苦于以下问题:PHP SplDoublyLinkedList类的具体用法?PHP SplDoublyLinkedList怎么用?PHP SplDoublyLinkedList使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SplDoublyLinkedList类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: get_result
function get_result($t, $ladders, $snakes)
{
fill_graph($t, $ladders);
fill_graph($t, $snakes);
$len = count($t);
$vertices = array();
for ($k = 0; $k < $len; $k++) {
$vertices[$k] = new vertex($k);
}
$adjacencyList = array();
for ($u = 0; $u < $len; $u++) {
$list = new SplDoublyLinkedList();
for ($v = 0; $v < $len; $v++) {
if ($t[$u][$v] != 0) {
$list->push(array('vertex' => $vertices[$v], 'distance' => $t[$u][$v]));
}
}
$list->rewind();
$adjacencyList[] = $list;
}
calcShortestPaths($vertices[0], $adjacencyList);
$path = end($vertices)->path;
$result = $p = 0;
for ($n = 0; $n < count($path); $n++) {
$p++;
if (@$path[$n + 1] - $path[$n] != 1) {
$result = $result + ceil(($p - 1) / 6);
$p = 0;
}
}
//echo "[" . implode(', ', $path) . "]\n\n";
return $result;
}
示例2: resetCreateGlobalVars
function resetCreateGlobalVars()
{
global $v0, $v1, $v2, $v3, $v4, $v5, $list0, $list1, $list2, $list3, $list4, $list5, $adjacencyList;
$v0 = new vertex(0);
$v1 = new vertex(1);
$v2 = new vertex(2);
$v3 = new vertex(3);
$v4 = new vertex(4);
$v5 = new vertex(5);
$list0 = new SplDoublyLinkedList();
$list0->push(array('vertex' => $v1, 'distance' => 3));
$list0->push(array('vertex' => $v3, 'distance' => 1));
$list0->rewind();
$list1 = new SplDoublyLinkedList();
$list1->push(array('vertex' => $v0, 'distance' => 3));
$list1->push(array('vertex' => $v2, 'distance' => 7));
$list1->rewind();
$list2 = new SplDoublyLinkedList();
$list2->push(array('vertex' => $v1, 'distance' => 7));
$list2->push(array('vertex' => $v3, 'distance' => 8));
$list2->push(array('vertex' => $v4, 'distance' => 12));
$list2->rewind();
$list3 = new SplDoublyLinkedList();
$list3->push(array('vertex' => $v0, 'distance' => 1));
$list3->push(array('vertex' => $v2, 'distance' => 8));
$list3->rewind();
$list4 = new SplDoublyLinkedList();
$list4->push(array('vertex' => $v2, 'distance' => 12));
$list4->push(array('vertex' => $v5, 'distance' => 3));
$list4->rewind();
$list5 = new SplDoublyLinkedList();
$list5->push(array('vertex' => $v4, 'distance' => 3));
$list5->rewind();
$adjacencyList = array($list0, $list1, $list2, $list3, $list4, $list5);
}
示例3: __construct
function __construct()
{
$this->listClients = new SplDoublyLinkedList();
//=========================load file===============================//
$read = new ReadCsv();
$lisClient = $read->get2DArrayFromCsv('files/clientes.csv', ',');
foreach ($lisClient as $row => $data) {
$listProductByClient = new SplDoublyLinkedList();
$contLines = 0;
$codeProduct = 0;
foreach ($data as $rowL => $dataL) {
if ($rowL > 1 && $dataL != "") {
if ($contLines == 0) {
$codeProduct = $dataL;
$contLines++;
} else {
$listProdCliente = new ListaProductosPorCliente();
$listProdCliente->setIdProducto($codeProduct);
$listProdCliente->setProducto($dataL);
$listProductByClient->push($listProdCliente);
$contLines--;
}
}
}
$client1 = new Clientes();
$client1->setName($data[0]);
$client1->setId($data[1]);
$client1->setListPruductByClient($listProductByClient);
$this->listClients->push($client1);
}
//=========================//load file=============================//
$this->listClients->serialize();
//$this->loadFile();
}
示例4: createTransitionsList
/**
* @param $vertex
* @return \SplDoublyLinkedList
*/
public function createTransitionsList($vertex)
{
$list = new \SplDoublyLinkedList();
$list->setIteratorMode(\SplDoublyLinkedList::IT_MODE_FIFO | \SplDoublyLinkedList::IT_MODE_KEEP);
$list->push($vertex);
return $list;
}
示例5: decode
/**
* @todo make recursive
*
* Reads a stream character for character until the suffix ('e') is found
* and returns the remainder of the string.
*
* @param string $stream Reads the stream into the buffer.
*
* @throws Bencode\Exceptions\IntegerException
*/
public function decode($stream)
{
$flag = false;
$stream = str_split($stream);
$buffer = '';
$size = count($stream);
$stack = new \SplDoublyLinkedList();
for ($i = 0; $i < $size - 1; $i++) {
if ($flag) {
if (is_numeric($stream[$i]) || $stream[$i] === '-') {
$stack->push($stream[$i]);
}
}
if ($stream[$i] === 'i') {
$flag = true;
}
if ($stream[$i] === 'e') {
$flag = false;
unset($stream[$i]);
break;
}
unset($stream[$i]);
}
foreach ($stack as $s) {
$buffer .= $s;
}
$this->_buffer = $buffer;
return implode('', array_values($stream));
}
示例6: decode
/**
* Reads a stream and decodes the byte character by character. This method
* will return the remainder of the stream.
*
* @param string $stream The stream to be decoded.
* @return string The remainder of the stream, if any.
*/
public function decode($stream)
{
$stream = str_split($stream);
$buffer = '';
$size = count($stream);
$sizeList = new \SplDoublyLinkedList();
$bufList = new \SplDoublyLinkedList();
// read the size of the byte from the stream
for ($i = 0; $i < count($stream); $i++) {
$temp = $stream[$i];
unset($stream[$i]);
if ($temp === ':') {
break;
}
$sizeList->push($temp);
}
$stream = array_values($stream);
$size = 0;
foreach ($sizeList as $sl) {
$size .= $sl;
}
// read the length of the byte from the stream
for ($i = 0; $i < $size; $i++) {
$bufList->push($stream[$i]);
unset($stream[$i]);
}
// read the byte into the buffer
foreach ($bufList as $bl) {
$buffer .= $bl;
}
$this->_buffer = $buffer;
return implode('', array_values($stream));
}
示例7: resolve
public function resolve($obj)
{
$result = new \SplDoublyLinkedList();
foreach ($obj as $value) {
$result->push($value);
}
return $result;
}
示例8: castDoublyLinkedList
public static function castDoublyLinkedList(\SplDoublyLinkedList $c, array $a, Stub $stub, $isNested)
{
$mode = $c->getIteratorMode();
$c->setIteratorMode(\SplDoublyLinkedList::IT_MODE_KEEP | $mode & ~\SplDoublyLinkedList::IT_MODE_DELETE);
$a += array("~mode" => new ConstStub(($mode & \SplDoublyLinkedList::IT_MODE_LIFO ? 'IT_MODE_LIFO' : 'IT_MODE_FIFO') . ' | ' . ($mode & \SplDoublyLinkedList::IT_MODE_KEEP ? 'IT_MODE_KEEP' : 'IT_MODE_DELETE'), $mode), "~dllist" => iterator_to_array($c));
$c->setIteratorMode($mode);
return $a;
}
示例9: castDoublyLinkedList
public static function castDoublyLinkedList(\SplDoublyLinkedList $c, array $a, Stub $stub, $isNested)
{
$prefix = Caster::PREFIX_VIRTUAL;
$mode = $c->getIteratorMode();
$c->setIteratorMode(\SplDoublyLinkedList::IT_MODE_KEEP | $mode & ~\SplDoublyLinkedList::IT_MODE_DELETE);
$a += array($prefix . 'mode' => new ConstStub(($mode & \SplDoublyLinkedList::IT_MODE_LIFO ? 'IT_MODE_LIFO' : 'IT_MODE_FIFO') . ' | ' . ($mode & \SplDoublyLinkedList::IT_MODE_KEEP ? 'IT_MODE_KEEP' : 'IT_MODE_DELETE'), $mode), $prefix . 'dllist' => iterator_to_array($c));
$c->setIteratorMode($mode);
return $a;
}
示例10: process
public function process($index, \SplDoublyLinkedList $list)
{
$first = $list->offsetGet($index - 1);
$second = $list->offsetGet($index + 1);
$result = $first * $second;
$list->offsetSet($index - 1, $result);
unset($list[$index]);
unset($list[$index]);
}
示例11: test
function test(SplDoublyLinkedList $l)
{
$l->push("a");
$l->push("b");
$l->push("c");
echo "ArrayAccess Unset:", PHP_EOL;
unset($l[0]);
var_dump($l[0]);
echo PHP_EOL;
}
示例12: tokenize
/**
* {@inheritdoc}
*/
public function tokenize($userAgent)
{
$iterator = new \SplDoublyLinkedList();
$iterator->setIteratorMode(\SplDoublyLinkedList::IT_MODE_FIFO);
foreach ($this->getTokens($userAgent) as $position => $token) {
$token = trim($token);
$iterator->push(new Node($token, $position, $this->resolveType($token)));
}
return $iterator;
}
示例13: process
public function process($index, \SplDoublyLinkedList $list)
{
$first = $list->offsetGet($index - 1);
$second = $list->offsetGet($index + 1);
if ($second == 0) {
throw new \Exception('zero division error');
}
$result = $first / $second;
$list->offsetSet($index - 1, $result);
unset($list[$index]);
unset($list[$index]);
}
示例14: testPHPUnitCommand
public function testPHPUnitCommand()
{
// need an explicit Traversable
$skippedPaths = new \SplDoublyLinkedList();
$skippedPaths->push('a');
$skippedPaths->push('b');
// going for 'bang for the buck' here re: test converage
$task = (new \Robo\Task\ApiGen\ApiGen('apigen'))->config('./apigen.neon')->source('src')->extensions('php')->exclude(array('test', 'tmp'))->skipDocPath($skippedPaths)->charset(array('utf8', 'iso88591'))->internal('no')->php(true)->tree('Y')->debug('n');
$cmd = 'apigen --config ./apigen.neon --source src --extensions php --exclude test --exclude tmp --skip-doc-path a --skip-doc-path b --charset \'utf8,iso88591\' --internal no --php yes --tree yes --debug no';
verify($task->getCommand())->equals($cmd);
$task->run();
$this->apigen->verifyInvoked('executeCommand', [$cmd]);
}
示例15: getIterator
/**
* Gets an iterator that iterates over each article.
*
* This list is never cached.
*
* @param bool $unpublished Whether articles not yet published should be fetched.
*/
public function getIterator($unpublished = false) : \Iterator
{
$articles = new \SplDoublyLinkedList();
foreach (new \GlobIterator($this->path . '/*.md') as $file) {
if ($file->isFile()) {
$article = $this->getArticleFromFile($file->getFilename());
if ($unpublished || !$article->date()->isFuture()) {
$articles->unshift($article);
}
}
}
return new \IteratorIterator($articles);
}