@@ -1795,6 +1795,38 @@ public function setRange( $key, $offset, $value ) {}
1795
1795
*/
1796
1796
public function strlen ( $ key ) {}
1797
1797
1798
+ /**
1799
+ * Return the position of the first bit set to 1 or 0 in a string. The position is returned, thinking of the
1800
+ * string as an array of bits from left to right, where the first byte's most significant bit is at position 0,
1801
+ * the second byte's most significant bit is at position 8, and so forth.
1802
+ * @param string $key
1803
+ * @param int $bit
1804
+ * @param int $start
1805
+ * @param int $end
1806
+ * @return int The command returns the position of the first bit set to 1 or 0 according to the request.
1807
+ * If we look for set bits (the bit argument is 1) and the string is empty or composed of just
1808
+ * zero bytes, -1 is returned. If we look for clear bits (the bit argument is 0) and the string
1809
+ * only contains bit set to 1, the function returns the first bit not part of the string on the
1810
+ * right. So if the string is three bytes set to the value 0xff the command BITPOS key 0 will
1811
+ * return 24, since up to bit 23 all the bits are 1. Basically, the function considers the right
1812
+ * of the string as padded with zeros if you look for clear bits and specify no range or the
1813
+ * start argument only. However, this behavior changes if you are looking for clear bits and
1814
+ * specify a range with both start and end. If no clear bit is found in the specified range, the
1815
+ * function returns -1 as the user specified a clear range and there are no 0 bits in that range.
1816
+ * @link http://redis.io/commands/bitpos
1817
+ * @example
1818
+ * <pre>
1819
+ * $redis->set('key', '\xff\xff');
1820
+ * $redis->bitpos('key', 1); // int(0)
1821
+ * $redis->bitpos('key', 1, 1); // int(8)
1822
+ * $redis->bitpos('key', 1, 3); // int(-1)
1823
+ * $redis->bitpos('key', 0); // int(16)
1824
+ * $redis->bitpos('key', 0, 1); // int(16)
1825
+ * $redis->bitpos('key', 0, 1, 5); // int(-1)
1826
+ * </pre>
1827
+ */
1828
+ public function bitpos ( $ key , $ bit , $ start = 0 , $ end = null ) {}
1829
+
1798
1830
/**
1799
1831
* Return a single bit out of a larger string
1800
1832
*
0 commit comments