Browse Source

Enhance ArrayHelper with popValue method

tags/2.0.0-beta
Antonio Ramirez 12 years ago
parent
commit
e2a57e4b88
  1. 33
      framework/helpers/base/ArrayHelper.php
  2. 10
      tests/unit/framework/helpers/ArrayHelperTest.php

33
framework/helpers/base/ArrayHelper.php

@ -87,6 +87,35 @@ class ArrayHelper
}
/**
* Removes an item from an array and returns the value. If the key does not exist in the array, the default value
* will be returned instead.
*
* Usage examples,
*
* ~~~
* // $array = array('type'=>'A', 'options'=>array(1,2));
* // working with array
* $type = \yii\helpers\ArrayHelper::getValue($array, 'type');
* // $array content
* // $array = array('options'=>array(1,2));
* ~~~
*
* @param array $array the array to extract value from
* @param string $key key name of the array element
* @param mixed $default the default value to be returned if the specified key does not exist
* @return mixed|null the value of the element if found, default value otherwise
*/
public static function popValue(&$array, $key, $default = null)
{
if (is_array($array)) {
$value = static::getValue($array, $key, $default);
unset($array[$key]);
return $value;
}
return $default;
}
/**
* Indexes an array according to a specified key.
* The input array should be multidimensional or an array of objects.
*
@ -284,12 +313,12 @@ class ArrayHelper
$args[] = $column;
}
} else {
$args[] = static::getColumn($array, $key);
$args[] = static::getColumn($array, $key);
}
$args[] = $ascending[$i] ? SORT_ASC : SORT_DESC;
$args[] = $flag;
}
$args[] = &$array;
$args[] = & $array;
call_user_func_array('array_multisort', $args);
}

10
tests/unit/framework/helpers/ArrayHelperTest.php

@ -12,6 +12,16 @@ class ArrayHelperTest extends \yii\test\TestCase
}
public function testPopvalue()
{
$array = array('name' => 'b', 'age' => 3);
$name = ArrayHelper::popValue($array, 'name');
$this->assertEquals($name, 'b');
$this->assertEquals($array, array('age' => 3));
}
public function testMultisort()
{
// single key

Loading…
Cancel
Save