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;