2016-12-26 5 views
0

Я использую Drupal (7), но у меня есть вопрос новичка в PHP.Подсчитайте количество значений в запросе

У меня есть запрос:

$array = array('1','2','3'); 
$nb_value = db_select('truc', 'tructruc') 
     ->fields('truc') 
     ->condition('value', $array) 
     ->execute() 
     ->fetchAll(); 

И я хочу, чтобы подсчитать, сколько раз оно существует каждое значение (сколько «1» и т.д.).

Я стараюсь, но это не работает:

foreach ($array as $value) { 
    if($value == '1') { 
     $nb_1 = count($nb_value); 
    } 
    if($value == '2') { 
     $nb_2 = count($nb_value); 
    } 
    ... 
    print $nb_1 
    print $nb_2 
    ... 

Где я ошибаюсь? И для решения это решение?

ответ

1

Вы можете использовать этот код:

foreach ($array as $value) { 
    if($value == '1') { 
     $nb_1++; 
    } 
    if($value == '2') { 
     $nb_2++; 
    } 
} 
... 
print $nb_1 
print nb_2 
... 

или использовать этот код (оптимизированный):

foreach ($array as $value) { 
    switch($value){ 
     case '1': 
     $nb_1++; 
     break; 
     case '2': 
      $nb_2++; 
     break; 
     ... 
    } 
} 
... 
print $nb_1 
print nb_2 
... 

Вы также можете использовать команду SQL для подсчета данных. как, например,

<?php 
    $servername = "localhost"; 
    $username = "dbusername"; 
    $password = "dbpassword"; 
    $dbname = "dbname"; 

    $conn = new mysqli($servername, $username, $password, $dbname); 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
    $sql = "select truc,count(truc) as cnt from tructruc group by truc"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      echo "Count of (".$row["truc"].") = ".$row["cnt"]."<br>"; 
     } 
    } else { 
     echo "0 results"; 
    } 
$conn->close(); 
?> 
+0

У меня есть ошибки: 'Undefined переменной:' за $ nb_1, $ nb_2 и т.д., и она не работает :(Она возвращает тот же номер для всех значений ... – Hgfdsoiu

+0

Вы должны определить переменные со значением по умолчанию (например, '$ nb_1 = 0;') в верхней части вашего кода. Поместите этот код, расположенный в верхней части вашего кодового блока. –

+0

У меня больше нет ошибки, но число всегда одинаково для всех values ​​... ($ nb_1 или $ nb_2 и т. д. возвращает одни и те же значения) – Hgfdsoiu

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