循环:PhP数组循环通过数据库查询输出结果

时间:2014-08-25 02:52:11

标签: php arrays loops foreach

我有一个名为$ helloArray的数组,看起来像

[peach] => 1
[banana] => 1
[apple] => 1
[pineapple] => 1
[grapefruit] => 2
[tomatoe] => 2
[giger] => 1
[watermelon] => 1

数据库列看起来像

City    peach   banana  apple   pineapple   grapfruit   tomatoe ginger  watermelon
Tokyo   0       0       0       500         0            0      0         0
DC      50      55      0       0           0            0      0         0
NY      0       0       0       0           0            500    0         0
Rome    0       0       0       0           90           0      0         0

我使用的SQL语句

$sql = "SELECT peach,banana,apple,pineapple,grapfruit,tomatoe,ginger,watermelon";
$sql .= " FROM TestTable2";
$sql .= " WHERE city ='NY'";  

问题: 如何循环遍历数组,然后循环变量名称(又名列名称)以便这样做 这样我们就可以得到纽约和罗马的2和1值。下面是我尝试过的代码,更不用说它没有用了

foreach ($helloArray as $key =>$value){
         for($i=0;$i<=odbc_num_fields($connection);$i++)
         { if (odbc_result($connection,$i) > 0) {
                echo $value; }
         }


    }

1 个答案:

答案 0 :(得分:-1)

好的,不确定我是否完全理解你的问题没有输出样本,但我猜你想要:     东京=&gt; 1     DC =&gt; 1     NY =&gt; 2     罗马=&gt; 2

如果是这样,你的做法是错误的。不要拉数据然后按摩它,构造你的SQL以返回你想要的数据。

SELECT City, CASE WHEN grapefruit > 0 THEN 2 WHEN tomatoe > 0 THEN 2 WHEN peach > 0 THEN 1 WHEN banana > 0 THEN 1 WHEN ... 

如果必须由数据驱动,则按降序值对hello数组进行排序,然后使用它来生成SQL case条件并返回val

- 编辑 -

好的,但是上面的代码示例,您将循环遍历数组作为key =&gt;值对。首先,你在peach =&gt; 1,然后循环返回结果中的每一列(桃子,西瓜等)并检查它的值是否大于0,如果是,那么你从数组输出值。 (桃子= 1)

因为在fieldname和数组的键之间没有比较,你只需要在桃子上为每一列输出1,在香蕉上输出每列1,等等。虽然我假设你想要检查字段NAMED桃是否大于零,如果是,则输出1,如果名为watermelon的字段大于零然后输出2,则需要修改循环。删除odbc_num_field并使用odbc_result语法指定要检索的列名。 odbc_result($ connection,$ key)&gt; 0

但是按照你原来的问题,听起来并不是你想要的,而是希望一个城市根据上述那些场比较(纽约= 2)返回的最大数量分配一定值。在哪种情况下,我的原始答案代表你只需要使用SQL为每个城市返回该值。