如何在php中动态设置数组键

前端之家收集整理的这篇文章主要介绍了如何在php中动态设置数组键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些逻辑用于对数据进行排序,但根据用户输入,数据的分组方式不同.现在我有五个不同的功能,包含相同的逻辑但不同的分组.有没有办法组合这些功能,并动态设置一个将正确分组的值.在功能中,这些任务正在发生

例如,有时我只是通过以下方式存储计算:

$calcs[$meter['UnitType']['name']] = ...

但其他时候需要更具体的分组:

$calcs[$meter['Resource']['name']][$meter['UnitType']['name']][date('Y-m',$start)] =...

正如您所看到的,有时候它会存储在多维数组中,有时则不存储.我一直在尝试使用eval()但没有成功(不确定这是正确的方法).将数据存储在临时变量中并不会真正节省太多,因为有许多嵌套循环和if语句,因此数组必须在多个位置重复.

编辑

我希望以下示例更好地解释我的问题.这显然是一个愚蠢的版本:

if(){
     $calcs[$meter['UnitType']['name']] = $data;
} else {
    while () {
       $calcs[$meter['UnitType']['name']] = $data;
    }
}

现在可以使用相同的逻辑但是将其存储在不同的键中:

if(){
     $calcs[$meter['Resource']['name']][$meter['UnitType']['name']][date('Y-m',$start)] = $data;
} else {
    while () {
       $calcs[$meter['Resource']['name']][$meter['UnitType']['name']][date('Y-m',$start)] = $data;
    }
}

有没有办法抽象$calc []数组中的键,以便我可以有一个函数而不是具有不同数组键的多个函数

做以下事情会不容易
$calcs = array(
    $meter['Resource']['name'] => array(
        $meter['UnitType']['name'] => 'Some Value',$meter['UnitType']['name2'] => 'Some Value Again'
    ),);

或者您可以使用对象

$calcs = new stdClass();
$calcs->{$meter['UnitType']['name']} = 'Some Value';

但我会建议你在数组中构建你的结构,然后做!

$calcs = (object)$calcs_array;

或者你可以将你的第一个数组循环到一个新数组!

$new = array();
$d = date('Y-m',$start);
foreach($meter as $key => $value)
{
    $new[$key]['name'][$d] = array();
}

先给它,看看阵列结构是如何出现的.

原文链接:https://www.f2er.com/php/137195.html

猜你在找的PHP相关文章