通过关联数组循环不能按预期工作?

时间:2013-09-02 17:28:16

标签: php arrays

我有一个像这样的数组,我正在这样循环:

$options = array();
$options[0] = 'test1';
$options[1] = 'test2';
$options[2] = 'test3';

foreach($options as $x)
{
  echo "Value=" . $x ;
  echo "<br>";
}

按预期输出:

Value=test
Value=test2
Value=test3

现在我想为我的数组添加一些选项并循环它们:

$options = array();
$options['first_option'] = 'test';
$options['second_option'] = get_option('second_option');
$options['third_option'] = get_option('third_option');

foreach($options as $x)
{
  echo "Value=" . $x ;
  echo "<br>";
}

但它不能按我的意愿行事。因为它输出:

Value=first_option
Value=second_option
Value=third_option

所以现在我不知道如何使用这些人的 foreach 来访问存储的值? 类似的东西:

Value=first_option='test'

所以当我使用print_r($options)
输出是:

Array
(
[first_options] => test
[second_option] => 
[third_option] => 
)
1

2 个答案:

答案 0 :(得分:4)

你的循环应如下所示:

foreach($options as $key => $val){
  echo "Val: ".$val;
  echo "<br/>";
}

答案 1 :(得分:1)

您的代码正常工作并产生所需的结果。您必须在$options中更改其他值。更正:现在我看到你的编辑,你的函数没有返回任何值,所以选项1和2是空白的。确保该函数返回一些东西。除此之外,所有这些代码都很好。

顺便说一下,我推荐这个:

$options = [
  'first_option' => 'test',
  'second_option' => get_option('second_option'),
  'third_option' => get_option('third_option')
];

foreach($options as $key) {
  echo "Value = {$key}<br>";
}

你也可以使用:

foreach($options as $key => $value) {
  echo "Value - {$value} = {$key}<br>";
}

或者您至少可以用array()替换[]。这些只是一些整洁的建议。