PHP:如何使用while循环打印关联数组?

8

我有一个简单的关联数组。

<?php
$assocArray = array('a' => 1, 'b' => 2, 'c' => 3);
?>

只使用while循环,如何将其打印成这个结果?
$a = 1 
$b = 2 
$c = 3

这是我目前的解决方案,但我认为这不是最高效/最佳的方法?

<?php
$assocArray = array('a' => 1, 'b' => 2, 'c' => 3);
$keys = array_keys($assocArray);
rsort($keys);

while (!empty($keys)) {
    $key = array_pop($keys);
    echo $key . ' = ' . $assocArray[$key] . '<br />';
};
?>

谢谢。

像这样:foreach($arr as $key=>$value) { .. } - UltraInstinct
你为什么只需要while循环? - Angelin Nadar
检查一下我的答案,伙计,它完全符合你的要求。 - Venkata Krishna
嗨Thrustmaster,我知道在foreach和for循环中如何做到这一点,但我不知道在while循环中高效实现它的方法,这就是为什么我想知道的原因 :) - marknt15
我的建议是使用marknt15,它非常高效且优秀。 - Venkata Krishna
5个回答

11

尝试使用这个语法,这是最有效的完成工作的方式...........

while (list($key, $value) = each($array_expression)) {
       statement
}

<?php


$data = array('a' => 1, 'b' => 2, 'c' => 3);

print_r($data);

while (list($key, $value) = each($data)) {
       echo '$'.$key .'='.$value;
}

?>

请查看此链接以获取参考信息......

这里有一个小的示例链接...


谢谢。这正是我要找的 :) 我在我的项目中不经常使用while循环,只用for和foreach循环。 - marknt15

3

遍历数组最好且最简单的方法是使用foreach循环

 foreach ($assocArray as $key => $value)
        echo $key . ' = ' . $value . '<br />';

OP正在询问如何使用while循环而不是foreach函数来打印它们。 - Alfred
while 和 foreach 之间并没有太大的区别,最终结果将是相同的。 - Aris

1
请尝试这个;
$assocarray = array('a' => 1, 'b' => 2, 'c' => 3);
$keys = array_keys($assocarray);
rsort($keys);
while (!empty($keys)) {
    $key = array_pop($keys);
    echo $key . ' = ' . $assocarray[$key] . '<br />';
};

0
我对此有一个简单的解决方案,它可以完成任务。
$x = array(0=>10,1=>11,2=>"sadsd");

end($x);    
$ekey = key($x);        
reset($x );

while(true){

    echo "<br/>".key($x)." = ".$x[key($x)];

    if($ekey == key($x) )break;
    next($x);
}

0

尝试下面的代码:

$assocArray = array('a' => 1, 'b' => 2, 'c' => 3);

$obj = new ArrayObject($assocArray);

foreach ( $obj as $key => $value ) {
    echo '$' . $key .'='. $value . "<br/>";
}

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