ホームページ  >  記事  >  バックエンド開発  >  PHPでのヒープとスタックの使用

PHPでのヒープとスタックの使用

不言
不言オリジナル
2018-04-23 17:26:552792ブラウズ

この記事は、PHP でのヒープとスタックの使用法を紹介しています。必要な友達に共有します。

1. ヒープとスタックの違いについて。

前回のブログはこちらを参照してください: ヒープとスタックの違いについての簡単な説明

この記事を通じて、広義のヒープとスタックについて知ることができますが、php での具体的な用途についてはどうすればよいでしょうか?

PHP は、配列要素を操作するためにプッシュとポップ (スタック) およびシフトとシフト解除 (キュー) に使用できる一連の関数を提供します。


1. プッシュとポップ

これら 2 つの関数はスタック上で動作し、先入れ後出しの原則に従います。樽に何かを加えるようなものです。プッシュ操作は array_push を通じて実行され、ポップ操作は array_pop を通じて実行されます。アドバンストスタックはバレルの底にあります。

(1)array_push()メソッド

array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。该函数等于多次调用 $array[] = $value。

(2)array_pop()メソッド

array_pop() 函数删除数组中的最后一个元素。
返回数组的最后一个值。如果数组是空的,或者非数组,将返回 NULL。

(3) 例:

 <?php
   $arr = array();
   array_push($arr,&#39;aaa&#39;);  //先入栈  aaa
   array_push($arr,&#39;bbb&#39;);  //后入栈   bbb
   print_r($arr);   //此时打印结果为:[0]=>aaa,[1]=>bbb
   $arr.pop();   //进行出栈操作,先进后出原则,则此时相当于bbb出栈了。
   print_r($arr);  //打印结果应该是[0]=>aaa?>
3. PHPで実装されたキュー

1.キュー

まず、キューが通常のスタックとは異なることは明らかです。キューは「先入れ先出し」の原則に従います。スタックは、スタックの先頭にのみ削除および挿入できます。キューでは、新しく挿入されたすべての要素がキューの最後に挿入され、削除されるすべての要素がキューの先頭に配置されます。要素がキューの先頭から削除されると、他のキュー内の要素も削除されます。 1 つ前の位置に移動し、要素がキューの先頭に移動すると、デキュー操作が受け入れられます。

キューモデルは、食べるために並ぶこととして理解できます。先に並んだ人が先に食べられます。

2. キュー操作

要素を追加するにはphpのarray_push()を使用し、要素を削除するにはarray_shift()を使用します。

(1)array_shift()メソッド

array_shift() 函数删除数组中第一个元素,并返回被删除元素的值。
如果键名是数字的,所有元素都会获得新的键名,从 0 开始,并以 1 递增

具体的なリファレンスマニュアル: http://www.w3school.com.cn/php/func_array_shift.asp

(2) 例:

<?php
   $arr = array();
   array_push($arr,&#39;aaa&#39;);  //队列中添加  aaa
   array_push($arr,&#39;bbb&#39;);  // 队列中添加   bbb
   print_r($arr);  //此时打印输出为  [0]=>aaa,[1]=>bbb
   array_shift($arr); //删除第一个元素,遵循先进先出原则,删除的是aaa
   print_r($arr);  //打印结果为  [0]=>bbb?>

(3) ) 両端キュー

両端で挿入と削除操作を可能にする特別なキューもあります。標準キューとの違いは、追加のキューがあることです。キューの先頭で挿入操作が行われ、キューの最後で削除操作が行われます。通常は、PHP の配列関数、array_unshift() および array_shift() を使用します。

具体的な参考: PHP キューの原理とキューベースのファイル書き込みケース 4. キューの目的

キューは、データベースにデータを頻繁に挿入し、エンジンが頻繁に検索する場合に、データの送信と保存を非常にうまく処理できます。データを送信すると、そのデータをキューに非同期的に挿入できます。さらに、FLV ビデオ変換、携帯電話のテキスト メッセージの送信、電子メールの送信など、メッセージ キューを介した処理のために、低速の処理ロジックや同時実行性が制限された処理ロジックをバックグラウンドに配置することもできます。

終了

関連する推奨事項:

PHP の文字列と正規表現

以上がPHPでのヒープとスタックの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。