php - 从多维数组中提取路径
问题描述
我解析了一段代码,结果(AST)的一部分是这样的数组:
Array (
[0] => PhpParser\Node\Stmt\Class_ Object
(
[flags] => 0
[implements] => Array
(
)
[name] => Test
[stmts] => Array
(
[0] => PhpParser\Node\Stmt\ClassMethod Object
( ...
现在我想提取上述数组的每个路径。我使用以下解决方案:
function backKeyPaths($tree){
$paths = array();
foreach ($tree as $key => &$mixed) {
if (is_array($mixed)) {
$results = backKeyPaths($mixed);
foreach ($results as $k => &$v) {
$paths[] = array($key => $v);
}
unset($results);
}
elseif (is_object($mixed)) {
$results = backKeyPaths($mixed);
foreach ($results as $k => &$v) {
$paths[] = array($key => (object) $v);
}
unset($results);
}
else {
$paths[] = array($key => $mixed);
}
}
return $paths;}
实际上期望的输出应该是这样的:
[0] => PhpParser\Node\Stmt\Class_ Object
(
[flags] => 0
)
[1] => PhpParser\Node\Stmt\Class_ Object
(
[implements] => Array
(
)
)
[2] => PhpParser\Node\Stmt\Class_ Object
(
[name] => Test
)
[3] => PhpParser\Node\Stmt\Class_ Object
(
[stmts] => Array
(
[0] => PhpParser\Node\Stmt\ClassMethod Object
( ...
) ...
但是我的解决方案没有返回正确的对象类并将它们全部视为 StdClass 对象。有没有办法通过维护值的类型将对象转换为正确的对象或提取路径?
解决方案
推荐阅读
- spring - 如何使用 Spring Boot、Spring Cloud Gateway/Config、Eureka 和 Database 为每个客户实例化正确的配置?
- reactjs - React Table / Material Table:在调整大小时折叠列(响应式)
- dialogflow-es - 在 Dialogflow 中,如何处理具有相同参考值的多个实体?
- java - 在另一个jsp文件中使用一个jsp文件中定义的java类
- python - 我想在我的 Raspberry Pi 4 上使用 4 个摄像头,但不是并行,而是顺序
- android-studio - Android Studio:执行 com.android.build.gradle.internal.res.ResourceCompilerRunnable 时发生故障
- java - 单击后如何显示吐司消息并使按钮不可见?
- python - 如何使用python在熊猫数据框中对每个连续的夜晚进行编号
- slack - 机器人不会发布链接预览
- bert-language-model - Huggingface EncoderDecoder 文本生成重复或删除生成的文本结尾