Php 输出多维数组的数组键
我正在尝试编写一个函数,它将多维数组作为输入并输出一个多行键字符串,如下所示Php 输出多维数组的数组键,php,arrays,key,Php,Arrays,Key,我正在尝试编写一个函数,它将多维数组作为输入并输出一个多行键字符串,如下所示 ['key']['subkey'] ['key']['another_subkey'] ['key']['another_subkey']['subkey_under_subkey'] ['key']['yet_another_subkey'] ['another_key']['etc'] 这是我的尝试。当你达到第二级时,它就有问题了 function get_array_keys_as_string($array)
['key']['subkey']
['key']['another_subkey']
['key']['another_subkey']['subkey_under_subkey']
['key']['yet_another_subkey']
['another_key']['etc']
这是我的尝试。当你达到第二级时,它就有问题了
function get_array_keys_as_string($array){
$output = "";
foreach($array as $k => $v){
if(is_array($v)){
$string = get_array_keys_as_string($v);
$prepend = "['$k']";
$string = $prepend.str_replace("\n","\n".$prepend, $string);
$output .= $string;
}
else{
$output .= "['$k']\n";
}
}
return $output;
}
我知道我需要一个递归函数,但到目前为止我的尝试还不够。试试这个
function arrayMultiKeys($array,$depth = 0){
foreach($array as $k=>$v){
echo "['".$k."']";
if(is_array($v)){
arrayMultiKeys($v,$depth + 1);
}
if($depth == 0 ){
echo "<br>";
}
}
}
函数数组多键($array,$depth=0){
foreach($k=>v的数组){
回音“[””、$k.“]”;
if(is_数组($v)){
阵列多键($v,$depth+1);
}
如果($depth==0){
回声“
”;
}
}
}
由于您没有提供示例数组(仅提供结果),因此不确定您希望如何输出,但这里有一个基于以下数组的示例
$array = array(
"key" => array(
"subkey" => 1,
"another_subkey" => array("2", "subkey_under_subkey" => 3),
"yet_another_subkey" => 4
),
"another_key" => array("etc"),
"last_key" => 0
);
使用以下函数
function recursive_keys($arr, $history = NULL)
{
foreach ($arr as $key => $value)
{
if (is_array($value))
recursive_keys($value, $history."['".$key."']");
else
echo $history."['".$key."']\n";
}
}
递归键($array)
的输出为
['key']['subkey']
['key']['another_subkey']['0']
['key']['another_subkey']['subkey_under_subkey']
['key']['yet_another_subkey']
['another_key']['0']
['last_key']
要获得您要求的确切输出,请使用以下命令:
$arr = array(
"key" => array(
"subkey" => 1,
"another_subkey" => array(
"subkey_under_subkey" => 1
),
"yet_another_subkey" => 1
),
"another_key" => array(
"etc" => 1
)
);
function print_keys_recursive($array, $path = false) {
foreach($array as $key=>$value) {
if(!is_array($value)) {
echo $path."[".$key."]<br/>";
} else {
if($path) {
echo $path."[".$key."]<br/>";
}
print_keys_recursive($value, $path."[".$key."]");
}
}
return;
}
print_keys_recursive($arr);
你能给我们提供所需的输出吗?以上是字符串形式的所需输出。请说明你的尝试有哪些不足。我们不是免费的编码服务,但我们会帮助您纠正错误,让您从中吸取教训。我知道它也会输出值,但如果您只需要检查数组以查看其结构,为什么不只打印它呢?此函数在第二个级别有一个问题,与我的类似,尽管它在方法上看起来更简洁。同一第一级密钥下的第二级密钥作为第三级密钥输出
[key][subkey]
[key][another_subkey]
[key][another_subkey][subkey_under_subkey]
[key][yet_another_subkey]
[another_key][etc]