2016-11-21 3 views
0

у меня есть этот массив:граф конкретных значений массива начинается что-то

$array = array("pg_1","pg_2","pg_3","pg_4","pg_5","qr_1","qr_2","qr_3"); 

Я хочу, чтобы подсчитать значения, который является начинается с пг.

До сих пор я попытался ниже код:

$arraycount = array_count_values($array); 

$countpg = $arraycount['pg%']; 

Я забыл, что у меня есть ключи и значения:

$array = Array ([pg_1] => 2 [pg_2] => 3 [pg_3] => 2 [pg_4] => 4 [pg_5] => 1 [gp_1] => 1 [gp_2] => 4 [gp_3] => 3) 

ответ

2

Если значение содержит pg, то приращение $i

$array = array("pg_1","pg_2","pg_3","pg_4","pg_5","qr_1","qr_2","qr_3"); 
$i = 0; 

foreach ($array as $value) { 
    if (strpos($value, 'pg') !== false) { 
     $i++; 
    } 
} 
echo $i; 

Просто заметил правку ...

Для ассоциативного массива, просто изменить цикл Foreach смотреть на $key и $value и запросите $key, а не $value, как показано на последнем примере.

$array = ["pg_1" => 2, "pg_2" => 3, "pg_3" => 2, "pg_4" => 4, "pg_5" => 1, "gp_1" => 1, "gp_2" => 4, "gp_3" => 3]; 
$i = 0; 

foreach ($array as $key => $value) { 
    if (strpos($key, 'pg') !== false) { 
     $i++; 
    } 
} 
echo $i; 
3
$array = array("pg_1","pg_2","pg_3","pg_4","pg_5","qr_1","qr_2","qr_3"); 

$count = count(array_filter($array, function($item) { 
    return strpos($item, 'pg') === 0; 
})); 

echo $count; 

Вы фильтровальные элементы, которые начинаются с «пг» а затем подсчет результатов.

2

Используйте метод ниже: -

$ массив = массив ("pg_1", "pG_2", "pg_3", "pg_4", "pg_5", "qr_1", "qr_2", "qr_3");

$search_val = preg_quote('pg', '*'); 

$result = preg_grep('*' . $search_val . '*', $array); 

count($result); 
2

Одно из решений линии использовать preg_grep функции

Try ниже кода:

$array = array("pg_1","pg_2","pg_3","pg_4","pg_5","qr_1","qr_2","qr_3"); 
$count = count(preg_grep('/pg/',$array)); 
echo $count; 

Для получения дополнительной справки функции обратитесь по этой ссылке - http://php.net/manual/en/function.preg-grep.php

0

Я хотел бы использовать фильтр массива здесь:

$array = array("pg_1","pg_2","pg_3","pg_4","pg_5","qr_1","qr_2","qr_3"); 

$c = count(array_filter($array, "getPG")); 

function getPG($key) 
{ 
    return strpos($key, "pg_") === 0; 
} 

echo 'count: ' .$c; 

У вас будет правильное количество элементов массива, которое начинается с «pg_», хранящегося в $c.

Смежные вопросы