2015-01-13 125 views
-2

我有一個SQL數組,其中包含語言和數量有多少用戶使用該語言。從數組中循環 - PHP

陣列的樣子:

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

正如你可以看到這個陣列恢復。我要讓他們的統計,但它是一種我的問題,因爲只有這樣,我能得到這個值是寫它的計數次數(這將改變OFC)

$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

'的foreach($數組作爲$ K => $ v)的' –

+0

' $ value){...}?>'$ key'將是12,'$ value'將是CZ。 ** 1個簡單的問題如果兩種語言具有相同的計數會發生什麼???? ** – CodeBird

+0

我們可以看到SQL請求嗎?我想我們可以在使用它之前做一些事情! – Spoke44

回答

3

在前,名行。

$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>'; 
} 
+0

輻條,這真的開始有意義,不幸的是,如果我使用您的查詢代碼它,我的「$ datas」轉儲空白 'array(1) 「$ languages」=> NULL' – Andurit

+0

@Andurit:你使用PDO ?因爲,我用$ this-> db->查詢,也許你有一個抽象層... – Spoke44

+0

我剛剛發現我沒有叫這個$請求,所以在我的網站上失敗(看起來我期待這個代碼太長),無論如何,這是正確的答案。 非常感謝您的幫助 – Andurit

1

首先排序與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, 
    ], 
]; 
-2
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'; 
} 
+0

什麼地址?你只是複製另一個問題的答案,並將其粘貼在這裏? – CodeBird