2015-01-13 1 views
-2

나는이 언어를 사용하는 사용자의 언어와 숫자가 포함 된 SQL의 배열을 가지고 있습니다. 이 배열은 되돌릴입니다 볼 수 있듯이배열에서 순환 - PHP

"$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 

(OFC를 바꿀 것입니다) 그것의 카운트 수를 작성하는 것입니다 때문에 나를 위해 종류의 문제입니다 어떻게 내가이 배열에서 일부 HTML을 에코 말을주기를 만들 수 있습니까?

내가 원하는 것은 :

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

'의 foreach ($ 배열 $ K로 => $ V) ' –

+0

'<의 PHP의 foreach ($를 키 $ 같은 언어 => $ value) {...}?>''$ key'가 12이고'$ value'가 CZ가됩니다. ** 1 개의 간단한 질문 2 개의 언어가 같은 수를 가진다면 어떻게 되나요? ** – 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

Spoke, 불행히도이 말이 시작됩니다. 쿼리 코드를 사용하면 내 "$ datas"덤프가 공백입니다. 'array (1) $ languages ​​=> NULL' – Andurit

+0

@Andurit : PDO를 사용합니까? ? 왜냐하면, $ this-> db-> query를 사용했기 때문에 아마도 추상화 계층 사이에 ... – 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; ?> 

을하지만 당신의 구조 버그가 그쪽 :

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

SQL처럼 보인다 :

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