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

原创
2016-06-23 14:25:10 828浏览

例如有这样一个数组:
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) "//m.sbmmt.com/m/faq/n1"
[1]=>
string(1) "//m.sbmmt.com/m/faq/n2"
[2]=>
string(1) "//m.sbmmt.com/m/faq/n3"
[3]=>
string(1) "//m.sbmmt.com/m/faq/n4"
}
["pic"]=>
array(9) {
[0]=>
string(4) "//m.sbmmt.com/m/faq/1.jpg"
[1]=>
string(4) "//m.sbmmt.com/m/faq/2.jpg"
[2]=>
string(4) "//m.sbmmt.com/m/faq/3.jpg"
[3]=>
string(4) "//m.sbmmt.com/m/faq/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"
}
....更多数组

}

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




  • 标题1
    85.00





  • 标题2
    155.00





  • 标题3
    49.00





  • 标题4
    75.00




  • 里面应该怎么写的?
    foreach($arr as $key => $value)
    {
    foreach(里面不会写了)
    {
    echo '
  • ';
    echo '';
    echo '';
    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("//m.sbmmt.com/m/faq/n1", "//m.sbmmt.com/m/faq/n2", "//m.sbmmt.com/m/faq/n3", "//m.sbmmt.com/m/faq/n4"),  "pic" => array("//m.sbmmt.com/m/faq/1.jpg", "//m.sbmmt.com/m/faq/2.jpg", "//m.sbmmt.com/m/faq/3.jpg", "//m.sbmmt.com/m/faq/4.jpg"),  "price" => array("85.00", "155.00", "49.00", "75.00"),);
    方法1:
    foreach($ar['id'] as $i=>$r) {  echo <<< HTML
  • {$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
  • $r[2]$r[3]
  • HTML;}
    均可输出
  • 标题185.00
  • 标题2155.00
  • 标题349.00
  • 标题475.00
  • 声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。