我有一个多维数组,并希望分别调用数组中各个级别的键和值。
现在使用普通数组,我可以写下:
$example = array('one', 'two', 'three');
echo $example[0];
这将返回:one
然而,当我尝试使用多维数组这样做时:
$example = array(
'optionone' => array('one', 'two', 'three'),
'optiontwo' => array('a','b','c'),
'optionthree' => array(1,2,3)
);
echo $example[0];
echo $example[0][0];
我没有回复“optionone”后跟“one”,而是没有返回任何内容,也没有错误代码。
使用以下方法试图了解原因:
var_dump($example[0)];
或
var_dump($example[0][0]);
NULL
已退回。
我真的很感激,如果有人能告诉我如何正确地获取/回显/调用'optionone'作为字符串从数组返回:'optionone'而不写入名称,我怎样才能调用值'one'而不用写作:
$example['optionone'][0];
我正在尝试创建一些不知道密钥名称的东西,所以它宁可通过密钥的位置,但我希望能够在程序的不同点返回密钥名称但是我似乎无法弄清楚如何做到这一点。
答案 0 :(得分:4)
这应该适合你:
只需将关联键放入带array_keys()
的数组中,这样就可以将它们作为基于0的索引数组访问,例如
因此,对于array_keys($example)
,您最终得到以下数组:
Array
(
[0] => optionone
[1] => optiontwo
[2] => optionthree
)
然后您可以根据需要访问它:
<?php
$example = array(
'optionone' => array('one', 'two', 'three'),
'optiontwo' => array('a','b','c'),
'optionthree' => array(1,2,3)
);
$keys = array_keys($example);
echo $keys[0] . "<br>";
echo $example[$keys[0]][0];
?>
输出:
optionone
one
答案 1 :(得分:1)
示例中的外部数组是关联数组。索引0
没有价值。如果您需要转到关联数组中的第一个键而不知道键的名称,则需要执行以下操作:
$example = array(
'optionone' => array('one', 'two', 'three'),
'optiontwo' => array('a','b','c'),
'optionthree' => array(1,2,3)
);
//get array keys into array
$example_keys = array_keys($example);
// get value at first key in $example array
$first_inner_array = $example[$example_keys[0]];
// get first value from first inner array
$first_value = $first_inner_array[0];
// Or to get an arbitrary value:
$x = ... // whatever inner array you want to get into
$y = ... // whatever index within inner array you want to get to
$value = $example[$example+keys[$x]][$y];
我想说如果你发现自己在代码中这样做,你的数据结构可能很差。关联数组并不意味着传达任何类型的元素排序。例如,如果您将示例数组更改为:
$example = array(
'optiontwo' => array('a','b','c'),
'optionone' => array('one', 'two', 'three'),
'optionthree' => array(1,2,3)
);
即使外部数组键和内部数组内容之间的关系没有改变,您也会从上面的代码中获取不同的值。
答案 2 :(得分:0)
未经测试
foreach($example as $f_array){
foreach($f_array as $key => $val){ //iterate over each array inside first array
echo $key; //should print 'optionone'
echo $val[0]; //should print 'one'
break;
}
}