Php 使用字符串存储语句(或语句的一部分),然后将其添加到代码中

Php 使用字符串存储语句(或语句的一部分),然后将其添加到代码中,php,Php,我使用多维数组来存储产品属性(确切地说,Virtuemart是这样做的)。 当我尝试回显子数组值时,如果子数组不存在: 致命错误:无法使用字符串偏移量 作为一个数组 为了解决这个问题,我尝试创建一个函数来检查每个数组级别是否为实际数组,以及它是否为空(当同时尝试整个事情时,例如:is_array($array['level1']['level2']['level3']),如果level1或level2不是实际数组,我会得到相同的错误) 这是函数($array包含要检查的数组,$array\u l

我使用多维数组来存储产品属性(确切地说,Virtuemart是这样做的)。 当我尝试回显子数组值时,如果子数组不存在:

致命错误:无法使用字符串偏移量 作为一个数组

为了解决这个问题,我尝试创建一个函数来检查每个数组级别是否为实际数组,以及它是否为空(当同时尝试整个事情时,例如:
is_array($array['level1']['level2']['level3'])
,如果
level1
level2
不是实际数组,我会得到相同的错误)

这是函数(
$array
包含要检查的数组,
$array\u levels
是包含子数组名称的数组,按其出现的顺序排列):


如何获取$dimensions中包含的字符串并将其插入到代码中,作为语句的一部分?

除了执行
求值之外,我认为您无法执行此操作

if(eval("!is_array($array".$dimension.")"))
    return false
然而,这是另一种方法

function check_md_array($array,$array_levels){
    if(!is_array($array))
         return false;

    foreach($array_levels as $level){
        if(!isset($array[$level]) || !is_array($array[$level]))
            return false;
        $array = $array[$level];
    }

    return true;
}

除了做
评估之外,我认为你做不到

if(eval("!is_array($array".$dimension.")"))
    return false
然而,这是另一种方法

function check_md_array($array,$array_levels){
    if(!is_array($array))
         return false;

    foreach($array_levels as $level){
        if(!isset($array[$level]) || !is_array($array[$level]))
            return false;
        $array = $array[$level];
    }

    return true;
}

最好使用引用而不是复制数组。@Dean:引用需要使用单独的变量,而不是
$array
本身。@Gumbo:我明白了。如果我使用对同一数组的引用,这意味着如果我对它进行迭代,我将修改数组指针。或者我误解了你,请再解释一下。@Damp:最真诚的道歉,我犯了一个错误。它工作得非常好+1,回答被接受。@dean Thx!另外,关于指针,这是完全正确的。最好使用引用,而不是复制数组。@Dean:引用需要使用单独的变量,而不是
$array
本身。@Gumbo:我明白了。如果我使用对同一数组的引用,这意味着如果我对它进行迭代,我将修改数组指针。或者我误解了你,请再解释一下。@Damp:最真诚的道歉,我犯了一个错误。它工作得非常好+1,回答被接受。@dean Thx!另外,关于指针,这是完全正确的。