php - 通过具有指定键的其他数组解析多维数组
问题描述
我想使用包含键的其他数组来解析主数组例如,我有以下主数组:
$test_array = [
'something' => 'Ceva',
'products' => [
'item' => [
[
'id' => '1',
'images' => [
[
'image' => 'image1.jpg'
],
[
'image' => 'image2.jpg'
]
]
],
[
'id' => '1',
'images' => [
[
'image' => 'image12.jpg'
],
[
'image' => 'image22.jpg'
]
]
],
],
]
]
这是包含键的第二个数组:
$settings = [
'products_path' => 'products,item',
'images_path' => 'products,item',
];
我需要一种使用设置数组从数组中获取特定路径的方法
example_function($test_array, $settings['products_path']);
应该返回:
[
'id' => '1',
'images' => [
[
'image' => 'image1.jpg'
],
[
'image' => 'image2.jpg'
]
]
],
[
'id' => '1',
'images' => [
[
'image' => 'image12.jpg'
],
[
'image' => 'image22.jpg'
]
]
],
更新
我已经使用此功能完成了此操作:
public function getPath($array, $columns, $return = []) {
if(!empty($columns)) {
foreach ($columns as $column_key => $column) {
if(isset($array[$column])) {
unset($columns[$column_key]);
$return = $this->getPath($array[$column], $columns);
}
}
} else {
$return = $array;
}
return $return;
}
解决方案
如果该示例看起来很简单,您可以将 $settings 键中的值分开并将它们用作数组索引。
function example_function($test_array, $settings_key_value ) {
// Separate the two $settings values from the 'product_path' key at the comma, using the first as your first index inside $test array, and second word as second index.
$settings_value = explode(',', $settings_key_value);
$new = $test_array[$settings_value[0]][$settings_value['1']];
}
只需按照您的示例调用该函数:
example_function($test_array, $settings['products_path']);
此外,可能有 11,000 种替代方法可以找到您的答案。所有的工具都在那里,如果 $settings 数组可以稍微改变一下,你甚至不需要explode() 函数就可以到达那里。
编辑:由于每个键中可能有不同数量的值:
function example_function($test_array, $settings_key_value ) {
$settings_values = explode(',', $settings_key_value);
foreach ($settings_values as $settings_value ) {
$output = $test_array[$settings_value];
if ( is_array( $output )) {
$test_array = $output;
}
break;
}
return $test_array;
}
推荐阅读
- python - App Engine Python 运行时不会带来与本地相同的结果
- web3js - 我应该为 ThunderCore 的交易设置什么 gas 价格?
- flutter - 用户登录后在 StoreConnector 中 Flutter redux Navigator.pop()
- android - 不知道如何使用 kotlin 仅在 Parcelable 对象 Arraylist 中检索一些变量
- jonkykong-sidemenu - jonkykong SideMenu presentationStyle 升级到 6.4.8 后停止工作
- python - 无法获取网址。请求 404
- java - 开关中的计算案例语句(java)
- c++ - 用 C++ 中的索引来初始化一个带有 lambda 的向量
- sqlite - 如何在 DB Browser for SQLite (GUI) 中插入多个外键
- sql - 我可以将临时表中的两列加在一起吗?