2016-09-01 60 views
0

我使用下面的代码片段获取从数据库中的记录,以显示正确的格式排列:用于循环使用PHP

if($pdo) 
{ 
$stmt = $pdo->query('SELECT ID,Province,City,Position,Locale FROM jobs'); 
$result=$stmt->fetchAll(PDO::FETCH_ASSOC); 
print("<pre>".print_r($result,true)."</pre>"); 
} 

我得到的数组:

我想

Province name 
    city name: 
    position name1: 
    position name 2: 
province name 
     city name: 
     Position name 3: 
     Position name 4: 

我写的代码:

使用每个循环,并显示在网站上检索值

任何人都可以请帮助我如何编写每个循环获取记录值。

感谢

+0

发表您的实现 –

+1

'的foreach($结果作为$行){回声$行[ '市']; ...}' – mazedlx

+0

请参阅添加到问题的代码 – Donald

回答

0
foreach($result as $key=>$val){ 
    $res[$val['Province']][$val['City']][$val['ID']] = $val['Position']; 
} 

输出是:。

Array 
(
    [BC] => Array 
     (
      [Winnipeg] => Array 
       (
        [1] => Licensed Technician - Body Technician 
       ) 

     ) 

    [Prairies] => Array 
     (
      [Winnipeg] => Array 
       (
        [2] => Licensed Technician - Body Technician 
       ) 

      [Edmonton] => Array 
       (
        [3] => Tire Technician 
       ) 

     ) 

    [Ontario] => Array 
     (
      [Regional Support Centre (Mississauga)] => Array 
       (
        [4] => Customer Service Representative 
        [5] => Payroll and Benefits Administrator 
       ) 

      [Mississauga] => Array 
       (
        [6] => Shunt-Delivery Driver 
        [7] => Technician 
       ) 

     ) 

) 
0

的foreach($结果作为$行){ 回声 “省名” $行[ '省']。”
; 呼应 “城市名称” $行[ '城市'。 “。
; 回声 “职位名称” $行[ '位置']“
; }

0

我运行演示它

<?php 

$result = array(
    array(
    'ID' => 1, 
    'Province' => 'BC', 
    'City' => 'Winnipeg', 
    'Position' => 'Licensed Technician - Body Technician', 
    'Locale' => 'en' 
), 
    array(
    'ID' => 2, 
    'Province' => 'Prairies', 
    'City' => 'Winnipeg', 
    'Position' => 'Licensed Technician - Body Technician', 
    'Locale' => 'en' 
), 
    array(
    'ID' => 3, 
    'Province' => 'Prairies', 
    'City' => 'Edmonton', 
    'Position' => 'Tire Technician', 
    'Locale' => 'en' 
), 
    array(
    'ID' => 4, 
    'Province' => 'Ontario', 
    'City' => 'Regional Support Centre (Mississauga)', 
    'Position' => 'Payroll and Benefits Representative', 
    'Locale' => 'en' 
), 
    array(
    'ID' => 5, 
    'Province' => 'Ontario', 
    'City' => 'Regional Support Centre (Mississauga)', 
    'Position' => 'Payroll and Benefits Administrator', 
    'Locale' => 'en' 
), 
    array(
    'ID' => 6, 
    'Province' => 'Ontario', 
    'City' => 'Mississauga', 
    'Position' => 'Shunt-Delivery Driver', 
    'Locale' => 'en' 
), 
    array(
    'ID' => 7, 
    'Province' => 'Ontario', 
    'City' => 'Mississauga', 
    'Position' => 'Technician', 
    'Locale' => 'en' 
) 
); 

$temp = array(); 
foreach ($result as $key => $value) { 
    $temp[$value['Province']][$value['City']][] = $value['Position']; 
} 
print_r($temp); 

而且结果:

Array 
(
    [BC] => Array 
     (
      [Winnipeg] => Array 
       (
        [0] => Licensed Technician - Body Technician 
       ) 

     ) 

    [Prairies] => Array 
     (
      [Winnipeg] => Array 
       (
        [0] => Licensed Technician - Body Technician 
       ) 

      [Edmonton] => Array 
       (
        [0] => Tire Technician 
       ) 

     ) 

    [Ontario] => Array 
     (
      [Regional Support Centre (Mississauga)] => Array 
       (
        [0] => Payroll and Benefits Representative 
        [1] => Payroll and Benefits Administrator 
       ) 

      [Mississauga] => Array 
       (
        [0] => Shunt-Delivery Driver 
        [1] => Technician 
       ) 

     ) 

) 

我希望它对你有用

0

过去一段时间,因为我搞砸了PHP,但你可以使用array_reduce建立一个基于省的新的散列,并嵌套在该关键下的匹配记录,这将使它更容易遍历:

<?php 
$data = [array(
'id' => 1, 
'Province' => 'Ontario', 
'Position' => 'Customer Service', 
), array(
'id' => 2, 
'Province' => 'Ontario', 
'Position' => 'Customer Service II', 
), array(
'id' => 3, 
'Province' => 'Edmunton', 
'Position' => 'Janitor', 
), array(
'id' => 4, 
'Province' => 'Edmunton', 
'Position' => 'Tire Technician', 
)]; 

$provincePositions = array_reduce($data, function($carry, $item) { 
    if (array_key_exists($item['Province'], $carry)) { 
     array_push($carry[$item['Province']], $item); 
    } else { 
     $carry[$item['Province']] = [$item]; 
    } 
    return $carry; 
}, []); 

foreach($provincePositions as $province => $positions) { 
    echo $province . "\n"; 
    foreach ($positions as $position) { 
     echo "\t" . $position['Position'] . "\n"; 
    } 
} 

输出是:

Ontario 
     Customer Service 
     Customer Service II 
Edmunton 
     Janitor 
     Tire Technician