用select语句查出了2个值。一个是公司名,一个是URL。
希望用foreach循环出来。就是在foreach循环里有二个$val,一个是公司名,一个是URL,这应该如何办到?后者有其他办法?
是使用二维数组吗?不是很懂,能指点下吗?

解决方案 »

  1.   

    没说清楚,你是说foreach提取数据,还是已经提取了数据之后再用foreach应用到其他地方?贴一下相关代码
      

  2.   

    补充,foreach好像不能用于提取数据的,要用while或for
      

  3.   

    你先prinf_r($sql)一下,看看是几维数组,你这个应该是一维数组,
    foreach($sql as $key=>$val){
      这里$key对应的是字段名
      $val对应的是内容,也就是你的公司名和url,
      看你需要哪个就取出哪个
    }
      

  4.   

    已经提取了数据,但这两个数据不知道如何放在数据里(或者二维数组),从而用foreach循环输出,每一次输出都必须有这两个值!
      

  5.   

    $sql = 'SELECT name, url FROM xxx';
    $query = mysql_query($sql);
    $data = array();
    while ($row = mysql_fetch_assoc){
      $data[] = $row;
    }
    print_r($data);array(
      0 => array(
        'name' => name1,
        'url' => url1
      ),
      1 => array(
        'name' => name1,
        'url' => url1
      )
      ...
    )
      

  6.   

    print_r(提取了数据)看一下,或帖出结果
      

  7.   

    我说的不是query(你说的提取),我说的是得到result后还要转到数组(我说的提取),看样子就是你的需求
    用while吧,很多例子,本版本页就有很多,看你后面怎么应用自己定义数组的形式可以用$arr[row][col]这样组成,也可以$arr[col][row]这样,看需求
      

  8.   


    <?php
    //查询c表里的a,b字段
    $sql="select a,b from c";
    $sel=mysql_query($sql);
    while($arr=mysql_fetch_array($sel))
    {
    //建立个$bj数组,把a,b的值都给它,也就是$bj[0]是a字段的值,$bj[1]是b字段的值
    //为什么要这么做,原因是我还加了些其他的判断,这里就简化了!
    $bj[]=$arr[a];
    $bj[]=$arr[b];
    }foreach($bj as $k=>$v)
    {
    //想要的效果:如何调用,使$bj[0]和$bj[1]同时出现在一次循环里,我想到的是用静态变量
    static $i=0;
    echo $bj[$i];
    echo "________";
    echo $bj[$i=$i+1];
    echo "<br />";
    }?>
    值是出来了,但莫名的会多出一段!静态变量的关系吗?不解!或者高手们有其他方法?二维数组?
    下面附加张效果图:想要的效果:
    兰德(北京)规划设计有限公司________1766
    北京麦田景观设计事务所(MILANDDESIGN)________957
    夏岩景观集团________4097
    兰德都市国际咨询(北京)有限公司________118215
    北京埃尔萨环境艺术设计有限公司________121744
    北京市中宏晓月园林绿化工程有限公司________130326
      

  9.   

    $arr=mysql_fetch_array($sel,MYSQL_NUM) //这个输出key是整数$arr=mysql_fetch_array($sel,MYSQL_ASSOC)//这个输出key是字段名上面两个任选一个,就不会重复了
      

  10.   

    $bj[]=$arr[a];
    $bj[]=$arr[b];这里第二个$bj[]的key其实已经递增了,跟第一个不同了$i=0
    while...{
    $bj[$i]=$arr[a];
    $bj[$i]=$arr[b];
    $i++;
    }这样写吧
      

  11.   

    sory!楼上的代码不行这个才对,不过变成二维数组了
    $i=0
    while...{
    $bj[$i][a]=$arr[a];
    $bj[$i][b]=$arr[b];
    $i++;
    }
      

  12.   

    原来你是将查询结果转换成了一维数组了(为什么要这样做,反正有你的道理)输出可以这样写
    for($i=0; $i<count($bj); $i+=2) {
      echo $bj[$i];
      echo "________";
      echo $bj[$i+1];
      echo "<br />";
    }也可以这样写
    foreach($bj as $i=>$v) {
      if( ($i % 2) == 0) {
        echo $v;
      } else {
        echo "________";
        echo $v;
        echo "<br />";
      }
    }
      

  13.   

    // 因为foreach不支持外部改变数组指针位置的变化(也就是foreach的数组指针怎么变化是遍历开始才决定下来的),
    // 是自成一个体系的,所以要使用能改变数组指针位置的循环
    while(list($k, $a) = each($bj)) {
    //想要的效果:如何调用,使$bj[0]和$bj[1]同时出现在一次循环里,我想到的是用静态变量 echo $a;

    echo "________";
    list($k, $b) = each($bj);
    echo $b; echo "<br />";}// 或者
    $len = count($bj);
    for($i = 0; $i < $len; $i++) {
    //想要的效果:如何调用,使$bj[0]和$bj[1]同时出现在一次循环里,我想到的是用静态变量 $a = $bj[$i];
    echo $a;

    echo "________";
    $b = $bj[++$i];
    echo $b; echo "<br />";
    }