我有一个多维数组,希望分别调用数组中各个级别的键和值。
现在有了一个普通的数组,我可以写:
$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_answers"one",也没有返回任何错误代码。
当试图通过使用来了解为什么会发生这种情况时
var_dump($example[0)];
或
var_dump($example[0][0]);
返回CCD_ 2。
如果有人能告诉我如何在不写名称的情况下正确地从数组中以字符串形式返回/echoc/call"optionone",以及如何在不写入的情况下调用值"one",我将不胜感激
$example['optionone'][0];
我试图创建一个不知道密钥名称的东西,所以它是按照密钥的位置进行的,但我希望能够在程序的不同点返回密钥名称,但我似乎不知道如何做到这一点。
这应该适用于您:
只需使用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
示例中的外部数组是一个关联数组。索引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)
);
即使外部数组键和内部数组内容之间的关系没有改变,您也会从上面的代码中检索到不同的值。
未测试
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;
}
}