我正在尝试为任意深度的JSON数组编写CRUD。
在我使用它之前 - 哪个有效 -
get('pages','home','title');
function get()
{
$numArgs = func_num_args();
$args = func_get_args();
switch ( $numArgs ) {
case 1:
$get = $GLOBALS['db'][$args[0]];
break;
case 2:
$get = $GLOBALS['db'][$args[0]][$args[1]];
break;
case 3:
$get = $GLOBALS['db'][$args[0]][$args[1]][$args[2]];
break;
// ETC
}
return $get;
}
但我真的不喜欢那样......而且我希望能够处理任何数组级别的更简单,更清晰,更强大的东西。
非常感谢任何想法
答案 0 :(得分:0)
为参数创建一个foreach,只需使用foreach中每个步骤的数据更新变量。
function get()
{
$numArgs = func_num_args();
$args = func_get_args();
$db = $GLOBALS['db'];
foreach($args as $arg){
$db = $db[$arg];
}
return $db;
}
工作示例
<?php
// dummy data
$GLOBALS['db'] = [
'pages' => [
'home' => [
'title' => 'Hello world',
'content' => [
'text' => 'hello',
'title' => 'Rock'
]
]
]
];
echo "<pre>";
// returns the title
var_dump(get('pages','home','title'));
// return the content text ( example with more keys in array )
var_dump(get('pages','home','content','text'));
// returns the content array
var_dump(get('pages','home','content'));
echo "</pre>";
function get()
{
$numArgs = func_num_args();
$args = func_get_args();
$db = $GLOBALS['db'];
foreach($args as $arg){
$db = $db[$arg];
}
return $db;
}