总是搞不懂foreach怎么这样遍历这样的数组

总是搞不懂foreach怎么这样遍历这样的数组,第1张

例如有这样一个数组:

array(4) {

["title"]=>

array(9) {

[0]=>

string(3) "标题1"

[1]=>

string(3) "标题2"

[2]=>

string(3) "标题3"

[3]=>

string(3) "标题4"

}

["id"]=>

array(9) {

[0]=>

string(1) "n1"

[1]=>

string(1) "n2"

[2]=>

string(1) "n3"

[3]=>

string(1) "n4"

}

["pic"]=>

array(9) {

[0]=>

string(4) "1.jpg"

[1]=>

string(4) "2.jpg"

[2]=>

string(4) "3.jpg"

[3]=>

string(4) "4.jpg"

}

["price"]=>

array(9) {

[0]=>

string(5) "85.00"

[1]=>

string(6) "155.00"

[2]=>

string(5) "49.00"

[3]=>

string(5) "75.00"

}

....更多数组


}


我想把里面的数据这样遍历循环出来:



  • 总是搞不懂foreach怎么这样遍历这样的数组,第2张

    标题1

    85.00





  • 总是搞不懂foreach怎么这样遍历这样的数组,第3张

    标题2

    155.00





  • 总是搞不懂foreach怎么这样遍历这样的数组,第4张

    标题3

    49.00





  • 总是搞不懂foreach怎么这样遍历这样的数组,第5张

    标题4

    75.00





  • 里面应该怎么写的?

    foreach($arr as $key => $value)

    {

    foreach(里面不会写了)

    {

    echo '

  • ';

    echo '';

    echo '总是搞不懂foreach怎么这样遍历这样的数组,第6张';

    echo $title;

    echo ''.$price.'';

    echo '';

    echo '

  • ';

    }

    }


    回复讨论(解决方案)

    foreach( $value as $k=>$v)

    红色的和上一层的值相同,蓝色则要不同

    你这种数组结构,最好用我之前发过的一个二维数组类做一次行列转换,就简单多了,输出时遍历一次则可

    你这种数组结构,最好用我之前发过的一个二维数组类做一次行列转换,就简单多了,输出时遍历一次则可

    在哪?链接可否发我一下。


    我发的帖子很少,你搜一下就能找到


    其实如果你能确认数组的键值对应,也可以直接遍历二维键值

    for($i=0;$i<=二维键值最大;$i++){

    echo $array["title"][$i];

    ……

    }

    foreach( $value as $k=>$v)

    红色的和上一层的值相同,蓝色则要不同

    这样出来的是就是所有数据了。



    效果是这样了:

    标题1

    标题2

    标题3

    标题4

    n1

    n2

    n3

    n4

    1.jpg

    2.jpg

    3.jpg

    4.jpg

    85.00

    155.00

    49.00

    75.00


    只是取出了所有数据而已,不是我要的

    标题1,n1,1.jpg,85.00

    标题2,n2,2.jpg,155.00

    标题3,n3,3.jpg,49.00

    标题4,n4,4.jpg,75.00

    只是取出了所有数据而已,不是我要的

    标题1,n1,1.jpg,85.00

    标题2,n2,2.jpg,155.00

    标题3,n3,3.jpg,49.00

    标题4,n4,4.jpg,75.00

    你的数据结构就是如此,所以说让你行列转换一下,或者按#4写的

    对于数据

    $ar = array(  "title" => array("标题1", "标题2", "标题3", "标题4"),  "id" => array("n1", "n2", "n3", "n4"),  "pic" => array("1.jpg", "2.jpg", "3.jpg", "4.jpg"),  "price" => array("85.00", "155.00", "49.00", "75.00"),);
    方法1:
    foreach($ar['id'] as $i=>$r) {  echo <<< HTML
  • 总是搞不懂foreach怎么这样遍历这样的数组,第7张{$ar['title'][$i]}{$ar['price'][$i]}
  • HTML;}
    方案2
    foreach(array_map(null, $ar['id'], $ar['pic'], $ar['title'], $ar['price']) as $i=>$r) {  echo <<< HTML
  • 总是搞不懂foreach怎么这样遍历这样的数组,第8张$r[2]$r[3]
  • HTML;}
    均可输出
  • 总是搞不懂foreach怎么这样遍历这样的数组,第2张标题185.00
  • 总是搞不懂foreach怎么这样遍历这样的数组,第3张标题2155.00
  • 总是搞不懂foreach怎么这样遍历这样的数组,第4张标题349.00
  • 总是搞不懂foreach怎么这样遍历这样的数组,第5张标题475.00
  • 欢迎分享,转载请注明来源:内存溢出

    原文地址: http://www.outofmemory.cn/zaji/478135.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2018-06-02
    下一篇 2018-06-02

    发表评论

    登录后才能评论

    评论列表(0条)

    保存