欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-04-17 16:48:00
...
例如有这样一个数组:
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怎么这样遍历这样的数组
    标题1
    85.00




  • 总是搞不懂foreach怎么这样遍历这样的数组
    标题2
    155.00




  • 总是搞不懂foreach怎么这样遍历这样的数组
    标题3
    49.00




  • 总是搞不懂foreach怎么这样遍历这样的数组
    标题4
    75.00




  • 里面应该怎么写的?
    foreach($arr as $key => $value)
    {
    foreach(里面不会写了)
    {
    echo '
  • ';
    echo '';
    echo '总是搞不懂foreach怎么这样遍历这样的数组';
    echo $title;
    echo ''.$price.'';
    echo '';
    echo '
  • ';
    }
    }

    回复讨论(解决方案)

    foreach( $value as $k=>$v)
    红色的和上一层的值相同,蓝色则要不同

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

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

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

    其实如果你能确认数组的键值对应,也可以直接遍历二维键值
    for($i=0;$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 总是搞不懂foreach怎么这样遍历这样的数组{$ar['title'][$i]}{$ar['price'][$i]}HTML;}
    方案2
    foreach(array_map(null, $ar['id'], $ar['pic'], $ar['title'], $ar['price']) as $i=>$r) {  echo 总是搞不懂foreach怎么这样遍历这样的数组$r[2]$r[3]HTML;}
    均可输出
    
    
  • 总是搞不懂foreach怎么这样遍历这样的数组标题185.00
  • 总是搞不懂foreach怎么这样遍历这样的数组标题2155.00
  • 总是搞不懂foreach怎么这样遍历这样的数组标题349.00
  • 总是搞不懂foreach怎么这样遍历这样的数组标题475.00