Home >Backend Development >PHP Tutorial >总是搞不懂foreach怎么这样遍历这样的数组

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

WBOY
WBOYOriginal
2016-06-23 14:25:101197browse

例如有这样一个数组:
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 <<< HTML<li><a href="$r" /><img  src="{$ar['pic'][$i]}"/ alt="总是搞不懂foreach怎么这样遍历这样的数组" >{$ar['title'][$i]}<em>{$ar['price'][$i]}</em></a></li>HTML;}
    方案2
    foreach(array_map(null, $ar['id'], $ar['pic'], $ar['title'], $ar['price']) as $i=>$r) {  echo <<< HTML<li><a href="$r[0]" /><img  src="$r[1]"/ alt="总是搞不懂foreach怎么这样遍历这样的数组" >$r[2]<em>$r[3]</em></a></li>HTML;}
    均可输出
    <li><a href="n1" /><img  src="1.jpg"/ alt="总是搞不懂foreach怎么这样遍历这样的数组" >标题1<em>85.00</em></a></li><li><a href="n2" /><img  src="2.jpg"/ alt="总是搞不懂foreach怎么这样遍历这样的数组" >标题2<em>155.00</em></a></li><li><a href="n3" /><img  src="3.jpg"/ alt="总是搞不懂foreach怎么这样遍历这样的数组" >标题3<em>49.00</em></a></li><li><a href="n4" /><img  src="4.jpg"/ alt="总是搞不懂foreach怎么这样遍历这样的数组" >标题4<em>75.00</em></a></li>

    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn