在 PHP 的 foreach 循环中如何获取数组的键名?

38

对于我的包含3个元素的数组,print_r($samplearr)输出如下:

Array ( [4722] => Array ( [value1] => 52 [value2] => 46 )
Array ( [4922] => Array ( [value1] => 22 [value2] => 47 )
Array ( [7522] => Array ( [value1] => 47 [value2] => 85 )

我想把它们放到一个 HTML 表格中,所以我使用了 foreach 循环,但结果并不是我期望的:

foreach($samplearr as $item){
     print "<tr><td>" . key($item) . "</td><td>" . $samplearr['value1'] . "</td><td>" . $samplearr['value2'] . "</td></tr>";
}

返回的是:

<tr><td>value1</td><td>52</td><td>46</td></tr>

这将是我想要的第一个输出:

<tr><td>4722</td><td>52</td><td>46</td></tr>

我需要使用哪个函数来代替key($item)以获取4722?

3个回答

93

试一下这个:

foreach($samplearr as $key => $item){
  print "<tr><td>" 
      . $key 
      . "</td><td>"  
      . $item['value1'] 
      . "</td><td>" 
      . $item['value2'] 
      . "</td></tr>";
}

6
如果您不需要 $item,您可以使用 foreach(array_keys($arr) as $key){} - ahuigo
1
或者你可以只存储引用&$item而不是复制变量,有时检索array_keys的性能比直接遍历整个数组要差 :-) - jave.web
请参考 https://www.php.net/manual/en/function.key.php。 - Shivanand Sharma

4

使用 foreach 循环遍历数组并同时获取键名和键值。

示例:

foreach($samplearr as $key => $val) {
     print "<tr><td>" 
         . $key 
         . "</td><td>" 
         . $val['value1'] 
         . "</td><td>" 
         . $val['value2'] 
         . "</td></tr>";
}

-3

你需要嵌套的for循环

foreach($samplearr as $key => $item){
   echo $key;
    foreach($item as $detail){
       echo $detail['value1'] . " " . $detail['value2']
     }
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接