不使用循环,输出数组的键和值;使用循环,输出数组的键和值。

37

这是我拥有的一个数组

<?php
$page['Home']='index.html';
$page['Service']='services.html';
?>

如何在单独的内容中实现像这样的回显

Home is at index.html

请问如何使用循环来实现并输出所有内容?


请参见foreach - Artefacto
1
阅读文档对于编程非常有帮助。请访问http://www.google.de/search?q=php+loop+array和http://www.php.net/manual/en/language.control-structures.php。 - Felix Kling
11个回答

88
foreach($page as $key => $value) {
  echo "$key is at $value";
}

对于“无循环”版本,我只想问:“为什么?”


1
这很好...只是想知道是否可以通过将其引用为0或1等来单独获取值...我刚刚开始接触这些东西。非常感谢! - esafwan
2
实际上,逐个访问数组项是非常常见的事情。 - Your Common Sense
哦,好的。我理解你的问题是“如何在不使用循环的情况下回显数组中的所有键值元素”,这在我看来是一件愚蠢的事情(除非像KennyTM那样使用array_walk)。 - Mchl
1
如果您的数组仅包含一个键和一个值,那么不必使用循环会更方便。如果您不知道键:key($page).' 在 '.$page[key($page)]; - Simon

16

为了好玩,不使用循环...


你可以通过以下方式将数组转换为非关联数组:

$page = array_values($page);

然后通过每个元素的从零开始的索引来访问每个元素:

echo $page[0]; // 'index.html'
echo $page[1]; // 'services.html'

或者您可以使用稍微复杂一些的版本:

$value = array_slice($page, 0, 1);

echo key($value); // Home
echo current($value); // index.html

$value = array_slice($page, 1, 1);

echo key($value); // Service
echo current($value); // services.html

8
如果你不能使用循环(为什么?),你可以使用array_walk函数。请参考官方文档
function printer($v, $k) {
   echo "$k is at $v\n";
}

array_walk($page, "printer");

请查看http://www.ideone.com/aV5X6

6

如何在不使用循环和使用循环的情况下输出数组的键和值

$array = array(
            'kk6NFKK'=>'name',
            'nnbDDD'=>'claGg',
            'nnbDDD'=>'kaoOPOP',
            'nnbDDD'=>'JWIDE4',
            'nnbDDD'=>'lopO'
         );


print_r(each($array));  

输出

Array
(
    [1] => name
    [value] => name
    [0] => kk6NFKK
    [key] => kk6NFKK
)

1
each()函数自PHP 7.2.0版本起已被弃用,强烈不建议使用此函数。来源:php.net - Genki

5
针对第一个问题:
$key = 'Home';
echo $key." is at ".$page[$key];

3
function displayArrayValue($array,$key) {
   if (array_key_exists($key,$array)) echo "$key is at ".$array[$key];
}

displayArrayValue($page, "Service"); 

2
如何在不使用循环和使用循环的情况下打印数组的键和值。
$keys = array_keys($page);
implode(',',$keys);
echo $keys[0].' is at '.$page['Home'];

1

没有循环的我的版本会像这样:

echo implode(
    "\n", 
    array_map(
         function ($k, $v) { 
             return "$k is at $v"; 
         }, 
         array_keys($page), 
         array_values($page)
    )
);

0
一个递归函数用于变化;) 我使用它来输出视频等元素的媒体信息,其中可以使用嵌套数组/属性。
function custom_print_array($arr = array()) {
    $output = '';
    foreach($arr as $key => $val) {
        if(is_array($val)){
            $output .= '<li><strong>' . ucwords(str_replace('_',' ', $key)) . ':</strong><ul class="children">' . custom_print_array($val) . '</ul>' . '</li>';
        }
        else {
            $output .=  '<li><strong>' . ucwords(str_replace('_',' ', $key)) . ':</strong> ' . $val . '</li>';
        }
    }
    return $output;
}

0
array_walk($v, function(&$value, $key) {
   echo $key . '--'. $value;
 });

了解更多关于array_walk的信息


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