PHP我可以';不知道如何找到当前父数组的数组键?

PHP我可以';不知道如何找到当前父数组的数组键?,php,arrays,multidimensional-array,array-key,Php,Arrays,Multidimensional Array,Array Key,我有一个关联多维数组和一个函数: //输入: $array = array(); $array['keyname0'] = array( 'key0' => 'value0', 'key1' => 'value1', //etc, ); $array['keyname1'] = array( 'key0' => 'value0', 'key1' => 'value1', //etc, ); //方法: function getCurrentPar

我有一个关联多维数组和一个函数:

//输入:

$array = array();
$array['keyname0'] = array(
  'key0' => 'value0',
  'key1' => 'value1',
  //etc,
);
$array['keyname1'] = array(
  'key0' => 'value0',
  'key1' => 'value1',
  //etc,
);
//方法:

function getCurrentParentArrayKey($array){
  //should return current key name of this array
  //I can't for the life of me find any array function on php.net or anywhere that solves this
}
//执行:

print getCurrentParentArrayKey($array['keyname0']);
//输出:

keyname0
更好的例子可能是:

$users=array(
  'michael' => array(
    'age' => '28',
    'height' => '5\'9"',
  )
);

function getUserName($array){
  //do something
  //@return: 'michael'
}

print getUserName($users['michael']);

我不相信您能够,当您将$array['keyname0']传递给getCurrentParentArrayKey()时,会丢失父数组的上下文,因为它在传入之前已解析为内部数组

您可以将父键添加为数组的值:

array(
    'key1' => array(
         'subkey1' => 'value1',
         'subkey2' => 'value2',
         'subkey3' => 'value3',
         'keyinparent' => 'key1'
    ),
    'key2' => array(
         'subkey4' => 'value4',
         'subkey5' => 'value5',
         'subkey6' => 'value6',
         'keyinparent' => 'key2'
    )
)

但是,在将子数组传递给函数之前,它需要进行处理。

根据收到的超快速评论,我想我有两种可能的解决方案

(注意:这就是为什么它被称为MVC而不是VMC或CVM lol的原因)

例1: (将父密钥名称添加到子数组): 例2: (将整个数组传递给函数,并将键名作为参数传递) 但是,如果您知道足够多的键名,可以将其提供给函数getName(),那么您可以将键名提供给输出

$keyname = 'michael';
print 'name: '.$keyname;

您正在将内部数组发送到示例中的函数,因此函数无法知道它接收的数组是更大数组、对象等的一部分。它只是一个数组。您将此键的值包含到函数中,而不是键名您希望已传递给函数的键oso我必须将数组重组为类似于$users=array('michael'=>array('name'=>'michael','age'=>'28','height'=>'5'9',);@MichaelHurley,更正这是解决此问题的最佳方法!谢谢!
$users=array(
  'michael' => array(
    'age' => '28',
    'height' => '5\'9"',
  ),
  'adrienne' => array(
    'age' => '26',
    'height' => '5\'3"',
  )
);

function getName($array,$array_key){
    $keys = array_keys($array);
    $key = array_search($array_key, $keys);
    return $keys[$key];
}

print 'Name: '.getName($users,'michael');
$keyname = 'michael';
print 'name: '.$keyname;