Динамически генерировать имя переменной печати - PullRequest
1 голос
/ 19 июня 2020

= Мне нужно вывести «целевое значение» в обоих вариантах (одномерный и двухмерный массив). Путем динамического создания имени переменной печати. Я нашел информацию по этой теме, но здесь все о простых переменных. но в моем случае я должен использовать массив. 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 "$" - 

Я не знаю почему)

такое возможно?

1 Ответ

0 голосов
/ 20 июня 2020

Попробуйте это:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...