Цикл из массива

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

Массив выглядит так:

"$languages" => array (5)
12 => "CZ" (2)
4 => "SK" (2)
3 => "DE" (2)
2 => "RO" (2)
6 => NULL

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

$langauges[12] -  answer CZ
$languages[CZ] -  answer error

Есть ли способ, как я могу сделать цикл из этого массива, скажем, повторить его в некоторый HTML?

Что я хочу это:

<div>
<div class="country"> CZ </div>
<div class="number"> 12 </div>
</div>

SQL выглядит так:

function getLanguageStatistic()
{
return $this->db->fetchPairs('SELECT COUNT(*), language FROM users GROUP BY language ORDER BY COUNT(language) DESC');
}

-2

Решение

Сначала назовите строку.

$request = $this->db->query("SELECT COUNT(*) as nbr
, language FROM users
GROUP BY language
ORDER BY COUNT(language) DESC");

Затем (используя PDO, но то же самое для других):

$datas = $request->fetchAll();

foreach($datas as $elem){
echo '<div>
<div class="country">'.$elem["language"].'</div>
<div class="number">'.$elem["nbr"].'</div>
</div>';
}
3

Другие решения

Сначала отсортируйте массив с помощью asort() что делать foreach

asort($languages);

foreach ($language as $frq => $acronym): ?>
<div>
<div class="country"> <?php echo $acronym; ?> </div>
<div class="number"> <?php echo $frq; ?> </div>
</div>
<?php endforeach; ?>

Но с вашей структурой есть ошибка:

У AZ 12 пользователей
LT имеет 12 пользователей

LT перезаписывает AZ в ключах массива. Лучше использовать эту структуру:

$languages = [
[
'country' => 'AZ',
'number' => 12,
],
[
'country' => 'LT',
'number' => 12,
],
];
1

Use a foreach loop to iterate through all the address, as seen below:

foreach($blockIP as $ip)
{
if($_SERVER['REMOTE_ADDR'] == $ip){
echo 'blocked';
}else{
echo 'not blocked';
}
}
If you only need to check to see if the current address is in the array, use the in_array() function:

if(in_array($_SERVER['REMOTE_ADDR'], $blockIP)){
echo 'blocked';
}else{
echo 'not blocked';
}
-2
По вопросам рекламы [email protected]