I have below array, i want to skip first 3 element from array (key – 0, 1, 2) and remove next 2 element(key – 3, 4). i.e – I want array like that, it skips every 1st 3 element and remove next 2 element after first 3. I tried below code, but it’s not proper solution for that.
JavaScript
x
for($i = 0; $i < count($newArray); $i += 1) {
if($i == 3 || $i == 4 || $i == 8 || $i == 9){
unset($newArray[$i]);
}
}
Input array
JavaScript
Array
(
[0] => 0.393
[1] => 0.769
[2] => 0.189
[3] => 0
[4] => 0
[5] => 0.349
[6] => 0.686
[7] => 0.168
[8] => 0
[9] => 0
[10] => 0.272
[11] => 0.534
[12] => 0.131
[13] => 1
[14] => 0
)
**Expected Output**
Array
(
[0] => 0.393
[1] => 0.769
[2] => 0.189
[3] => 0.349
[4] => 0.686
[5] => 0.168
[6] => 0.272
[7] => 0.534
[8] => 0.131
)
Advertisement
Answer
You can use array_filter
, using the ARRAY_FILTER_USE_KEY
flag to pass the element keys to the filter function, and remove all entries whose key % 5
is not < 3
:
JavaScript
$newArray = array_filter($newArray, function ($k) { return $k % 5 < 3; }, ARRAY_FILTER_USE_KEY );
print_r($newArray);
Output:
JavaScript
Array
(
[0] => 0.393
[1] => 0.769
[2] => 0.189
[5] => 0.349
[6] => 0.686
[7] => 0.168
[10] => 0.272
[11] => 0.534
[12] => 0.131
)
Note that if you want the array values 0-indexed, you can pass the result through array_values
:
JavaScript
$newArray = array_values($newArray);
print_r($newArray);
Output:
JavaScript
Array
(
[0] => 0.393
[1] => 0.769
[2] => 0.189
[3] => 0.349
[4] => 0.686
[5] => 0.168
[6] => 0.272
[7] => 0.534
[8] => 0.131
)