前回\SplPriorityQueueを紹介しましたが、今回のZend\Stdlib\SplPriorityQueueはZendFrameworkによる\SplPriorityQueueの拡張です。
使いやすいように、配列出力やシリアライズする機能が追加されています。
結果。
件数:5
一番目:最優先
キー:4 値:最優先
キー:3 値:にばんめその1
キー:2 値:にばんめその2
キー:1 値:低い
キー:0 値:一番低い
件数:0
結果が前回と微妙に違います。
配列のキーが0スタートになっているのと、同プライオリティのデータが順不同ではなくinsertした順に整列されるのが主な違いです。
また、toArray()、serialize()といった便利なメソッドが増えています。
配列にした場合は優先度が消えるため、配列から元に戻すことはできません。
シリアライズした場合は全情報が保存されるため、完全に元の状態に戻すことができます。
これらのためにわざわざ入れるほどの内容でもありませんが、ZFを使っているならついでにZend\Stdlib\SplPriorityQueueを使ってみてもいいかもしれません。
どうでもいいけどZend\Stdlib\SplPriorityQueue::insert()のソース中で、\SplPriorityQueue::insert()の第二引数priorityに配列を突っ込んでいました。
この使い方、\SplPriorityQueue::insert()には全く書かれていません。
何故かSplPriorityQueue::compare()のノートにしれっと書いてあるだけで、他に何処にも情報が見当たりませんでした。
その結果どうなるかというと、配列の複数の要素で優先順位を判断してくれるようです。
使いやすいように、配列出力やシリアライズする機能が追加されています。
<?php require_once('path/to/channel/vendor/autoload.php'); $queue = new Zend\Stdlib\SplPriorityQueue(); $queue->insert('低い', 10); $queue->insert('最優先', 100); $queue->insert('にばんめその1', 50); $queue->insert('にばんめその2', 50); $queue->insert('一番低い', 1); // 個数 → 5 print($queue->count()); // 配列に取り出す $array = $queue->toArray(); // シリアライズも可能 $serial = $queue->serialize(); // 優先順位の高い順になる foreach($queue as $key=>$val){ print('キー:' . $key . ' 値:' . $val); } // 一度使うとやっぱり消える → 0 print($queue->count()); // シリアライズから元に戻せる $queue2 = new Zend\Stdlib\SplPriorityQueue(); $queue2->unserialize($serial);
結果。
件数:5
一番目:最優先
キー:4 値:最優先
キー:3 値:にばんめその1
キー:2 値:にばんめその2
キー:1 値:低い
キー:0 値:一番低い
件数:0
結果が前回と微妙に違います。
配列のキーが0スタートになっているのと、同プライオリティのデータが順不同ではなくinsertした順に整列されるのが主な違いです。
また、toArray()、serialize()といった便利なメソッドが増えています。
配列にした場合は優先度が消えるため、配列から元に戻すことはできません。
シリアライズした場合は全情報が保存されるため、完全に元の状態に戻すことができます。
これらのためにわざわざ入れるほどの内容でもありませんが、ZFを使っているならついでにZend\Stdlib\SplPriorityQueueを使ってみてもいいかもしれません。
どうでもいいけどZend\Stdlib\SplPriorityQueue::insert()のソース中で、\SplPriorityQueue::insert()の第二引数priorityに配列を突っ込んでいました。
この使い方、\SplPriorityQueue::insert()には全く書かれていません。
何故かSplPriorityQueue::compare()のノートにしれっと書いてあるだけで、他に何処にも情報が見当たりませんでした。
その結果どうなるかというと、配列の複数の要素で優先順位を判断してくれるようです。
PR