function count_consecutive_values($array, $value) {
$result = array();
$count = 0;
foreach ($array as $key => $element) {
if ($element == $value) {
$count++;
if ($count == 1) {
$first_key = $key;
}
} else {
if ($count > 0) {
$result[$first_key] = $count;
$count = 0;
}
}
}
if ($count > 0) {
$result[$first_key] = $count;
}
return $result;
}
В вашем случае, вы можете вызвать эту функцию, передав ей исходный массив и значение 'image': $array = array('image', 'paragraph', 'paragraph', 'image', 'image', 'paragraph', 'image', 'paragraph', 'paragraph');
$result = count_consecutive_values($array, 'image');
print_r($result);
Этот код выведет следующий результат: Array
(
[0] => 1
[3] => 2
[6] => 1
)
var arr = ["image","paragraph","paragraph","image","image","paragraph","image","paragraph","paragraph"]
var uniqs = arr.reduce((acc, val) => {
acc[val] = acc[val] === undefined ? 1 : acc[val] += 1;
return acc;
}, {});
console.log(uniqs)
$array = Array('image', 'paragraph', 'paragraph', 'image', 'image', 'paragraph', 'image', 'paragraph', 'paragraph');
function _my($arr, $var){
$lines = count($arr);
$new_arr = array();
for ( $i = 0; $i < $lines; $i++ ){
if($arr[$i] == $var){
if(!empty($arr[$i+1])){
if ($arr[$i] == $arr[$i+1]){
if ( empty($I) ){ $I = $i; }
if ( empty($new_arr[$I]) ){ $new_arr[$I] = 2; }
else $new_arr[$I]++;
}
elseif ($arr[$i] != $arr[$i+1] and empty($I)) {
$new_arr[$i] = 1;
}
else $I = null;
}
}
}
print ""; print_r($new_arr); print "
";
}
_my($array, 'image');
_my($array, 'paragraph');
?>
выведет