Skip to content

Commit 71b5bb7

Browse files
committed
Updated readme + added random
1 parent 228b2db commit 71b5bb7

File tree

5 files changed

+128
-8
lines changed

5 files changed

+128
-8
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
}
1010
],
1111
"require": {
12-
"php": ">=5.4.0"
12+
"php": ">=5.4.0",
13+
"typedphp/number-functions": "*"
1314
},
1415
"autoload": {
1516
"files": [

composer.lock

Lines changed: 80 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

readme.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,30 @@
88

99
## Example
1010

11-
TODO
11+
```php
12+
use TypedPHP\Functions\ArrayFunctions;
13+
14+
ArrayFunctions\map([1, 2, 3], function($item) { return $item * 2; }); // [2, 4, 6]
15+
ArrayFunctions\contains(["foo", "bar", "baz], "bar"); // true
16+
```
1217

1318
Functions:
1419

15-
TODO
20+
- `contains(array $haystack, $needle) → bool`
21+
- `each(array $array, callable $callback) → array`
22+
- `exclude(array $array, array $exclude) → array`
23+
- `filter(array $array, callable $callback) → array`
24+
- `length(array $array) → int`
25+
- `has(array $array, $needle) → bool`
26+
- `join(array $array, $glue) → string`
27+
- `map(array $array, callable $callback) → array`
28+
- `merge(array $array, array $merge) → array`
29+
- `slice(array $array, $offset = 0, $limit = 0) → array`
30+
- `random(array $array) → mixed`
1631

1732
Caveats:
1833

19-
TODO
34+
- Nope
2035

2136
## Installation
2237

src/ArrayFunctions.php

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace TypedPHP\Functions\ArrayFunctions;
44

5+
use TypedPHP\Functions\NumberFunctions;
6+
57
/**
68
* @param array $haystack
79
* @param mixed $needle
@@ -17,11 +19,13 @@ function contains(array $haystack, $needle)
1719
* @param array $array
1820
* @param callable $callback
1921
*
20-
* @return bool
22+
* @return array
2123
*/
2224
function each(array $array, callable $callback)
2325
{
24-
return array_walk($array, $callback);
26+
array_walk($array, $callback);
27+
28+
return $array;
2529
}
2630

2731
/**
@@ -115,3 +119,19 @@ function slice(array $array, $offset = 0, $limit = 0)
115119

116120
return array_slice($array, $offset, $limit);
117121
}
122+
123+
/**
124+
* @param array $array
125+
*
126+
* @return mixed
127+
*/
128+
function random(array $array)
129+
{
130+
$index = NumberFunctions\random(0, length($array));
131+
132+
if (isset($array[$index])) {
133+
return $array[$index];
134+
}
135+
136+
return null;
137+
}

tests/ArrayFunctionTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,10 @@ public function testSlice()
7575
$this->assertEquals([2, 3], ArrayFunctions\slice([1, 2, 3], 1));
7676
$this->assertEquals([2], ArrayFunctions\slice([1, 2, 3], 1, 1));
7777
}
78+
79+
public function testRandom()
80+
{
81+
$this->assertNull(ArrayFunctions\random([]));
82+
$this->assertNotNull(ArrayFunctions\random([1, 2, 3]));
83+
}
7884
}

0 commit comments

Comments
 (0)