首页 > 解决方案 > 动态生成打印变量的名称

问题描述

=我需要在两种变体(一维和二维数组)中打印“目标值”。通过动态生成打印变量的名称。我找到了有关该主题的信息,但这里的所有内容都是关于简单变量的。但是,就我而言,我必须使用一个数组。 https://www.php.net/manual/en/language.variables.variable.php

类似的东西,这是我的代码......

    //case One
        $array = [
            0 => 'value',
            1 => 'value',
            2 => 'targetValue'
        ];

    //case Two
        $array = [
            0 => [
                0 => 'value',
                1 => 'value',
                2 => 'targetValue',
            ],
            1 => [
                0 => 'value',
                1 => 'value',
                2 => 'targetValue',
            ],
            2 => [
                0 => 'value',
                1 => 'value',
                2 => 'targetValue',
            ]
        ];

        if(array is two-dimensional){
            $name = 'array[0][2]';
        }else{
            $name = 'array[2]';
        }
        echo $$name;




EXAMPLE 2
$params['criteria'] = 'TargetValue';
$name = "['criteria']";
$test = "Params" . $name;

var_dump($$test);
result:Undefined variable: params['criteria'] (without "$" - 

我不知道为什么)

OR EXAMPLE 3
$params['criteria'] = 'TargetValue';
$name = "params['criteria']";

var_dump($$name);
result:Undefined variable: params['criteria'] (without "$" - 

我不知道为什么)

这可能吗?

标签: php

解决方案


试试这个:

if (count($array) == count($array, COUNT_RECURSIVE) {
    $name = $array[2];
} else {
    $name = $array[0][2];
}

echo $name;

(更新)

我认为你想要的是这样的例子:

$params['criteria'] = 'TargetValue';
$name = ${'params'}['criteria'];
var_dump($name);

这将返回:string(11) "TargetValue"


然后它是两者的混合,假设你是初始数组(案例 1 和 2)

if (count($array) == count($array, COUNT_RECURSIVE) {
    $name = ${'array'}[2];
} else {
    $name = ${'array'}[0][2];
}

var_dump($name);

推荐阅读