如何在不在echo语句中写入其键的情况下从多维数组内部回显键或值?

时间:2015-06-25 18:02:22

标签: php arrays multidimensional-array

我有一个多维数组,并希望分别调用数组中各个级别的键和值。

现在使用普通数组,我可以写下:

$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];

我正在尝试创建一些不知道密钥名称的东西,所以它宁可通过密钥的位置,但我希望能够在程序的不同点返回密钥名称但是我似乎无法弄清楚如何做到这一点。

3 个答案:

答案 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;
    }
 }