当前位置: 首页 > 面试题库 >

动态阵列键

阎建中
2023-03-14
问题内容

我有一个像这样的字符串:

$string = 'one/two/three/four';

我把它变成一个数组:

$keys = explode('/', $string);

该数组可以具有任意数量的元素,例如1、2、5等。

如何为多维数组分配一个特定的值,但是如何使用$keys上面创建的I标识要插入的位置?

喜欢:

$arr['one']['two']['three']['four'] = 'value';

抱歉,这个问题令人困惑,但是我不知道如何更好地解释它


问题答案:

这是不平凡的,因为您想嵌套,但是应该这样:

function insert_using_keys($arr, $keys, $value){
    // we're modifying a copy of $arr, but here
    // we obtain a reference to it. we move the
    // reference in order to set the values.
    $a = &$arr;

    while( count($keys) > 0 ){
        // get next first key
        $k = array_shift($keys);

        // if $a isn't an array already, make it one
        if(!is_array($a)){
            $a = array();
        }

        // move the reference deeper
        $a = &$a[$k];
    }
    $a = $value;

    // return a copy of $arr with the value set
    return $arr;
}


 类似资料:
  • 问题内容: 我想知道从ArrayList转换为Array是否安全/建议?我有一个文本文件,每行一个字符串: 我想将它们读入数组列表,然后将其转换为数组。建议这样做/合法吗? 谢谢 问题答案: 是的,将转换为是安全的。一个好主意取决于您的预期用途。您需要提供的操作吗?如果是这样,请将其保留为。否则转换掉! 输出

  • 我正在学习C。我有一个程序,可以动态创建和填充两个矩阵X和Y,使用随机数使用rand(),如下所示 当我运行这个程序并给出2作为我的矩阵的大小时,我看到“分离故障”是错误。请注意,我们的想法是用双精度类型的随机元素填充两个矩阵。如果上面的代码是正确的,请告诉我。 更正:编辑1 以上功能现在正常工作。需要解释x=(double**)malloc(m*sizeof(double*));并且x[i]=(

  • 所以,我正在尝试匹配 2 个不同的数组。如果相同的单元格匹配,我想使用 .slice 方法从一个数组中删除该单元格。 编辑:我想做的是从数组1中移除一个数字,如果数组2包含一个匹配的数字。代码现在的工作方式是只删除1个条目。我要删除第一个数组中的所有条目。 我尝试运行这个,在控制台日志下,array1没有变化。似乎拼接方法没有删除任何单元格。我搜索了SE,但没有找到任何可以帮助我的东西。

  • 本章将解释数组的Firebase表示。 我们将使用前一章中的相同数据。 我们可以通过将以下JSON树发送到播放器的集合来创建此数据。 ['john', 'amanda'] 这是因为Firebase不直接支持Arrays,但它会创建一个以整数作为键名的对象列表。 不使用数组的原因是Firebase充当实时数据库,如果有几个用户同时操作数组,结果可能会有问题,因为数组索引不断变化。 Firebase

  • 我们已经讨论过汇编程序的数据定义指令用于为变量分配存储空间。 变量也可以用一些特定值初始化。 初始化值可以以十六进制,十进制或二进制形式指定。 例如,我们可以通过以下任一方式定义单词变量'months' - MONTHS DW 12 MONTHS DW 0CH MONTHS DW 0110B 数据定义指令也可用于定义一维数组。 让我们定义一维数字数组。 NUMBERS DW 34, 45,

  • 考虑我们需要存储五个整数的情况。 如果我们使用编程的简单变量和数据类型概念,那么我们需要五个int数据类型的变量,程序将如下 - #include <stdio.h> int main() { int number1; int number2; int number3; int number4; int number5; number1 = 10;