From 2eadebd11488194e45d75b722bc0ebbabf15dcc3 Mon Sep 17 00:00:00 2001 From: Andrey Kutejko Date: Sat, 10 Aug 2013 21:31:29 +0300 Subject: [PATCH] add pop array utility --- src/arraytools.php | 11 +++++++++++ t/ArrayTest.php | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/arraytools.php b/src/arraytools.php index 5d177bd..3550f3c 100644 --- a/src/arraytools.php +++ b/src/arraytools.php @@ -23,5 +23,16 @@ final class ArrayTools else return $array[$key] = array($value); } + + public static function pop(&$array, $key, $default=null) + { + if (array_key_exists($key, $array)) { + $value = $array[$key]; + unset($array[$key]); + return $value; + } else { + return $default; + } + } } diff --git a/t/ArrayTest.php b/t/ArrayTest.php index 687326f..de15380 100644 --- a/t/ArrayTest.php +++ b/t/ArrayTest.php @@ -39,5 +39,24 @@ class ArrayToolsTest extends PHPUnit_Framework_TestCase $this->assertEquals(array('green', 'sweet'), $arr['apple']); $this->assertEquals(array('orange', 'long'), $arr['carrot']); } + + public function testPop() + { + $arr = array( + 'apple' => 100, + 'grapefruit' => 400, + 'carrot' => 50, + ); + + $apple = ArrayTools::pop($arr, 'apple'); + $this->assertEquals(false, array_key_exists('apple', $arr)); + $this->assertEquals(100, $apple); + + $apple = ArrayTools::pop($arr, 'apple'); + $this->assertEquals(null, $apple); + + $apple = ArrayTools::pop($arr, 'apple', 'what?'); + $this->assertEquals('what?', $apple); + } } -- 2.49.0