如何使用存储为字符串的输入字段名作为php数组标记

如何使用存储为字符串的输入字段名作为php数组标记,php,Php,我有一个通过ajax函数传递给我的字段名,我需要使用它来查找现有数组中的值。e、 g $myarray = array( 'name' => array( '0' => array( 'first' => 'Steve' ) ), ); $incoming = 'name[0][first]'; 因此,使用$incoming变量,我想从数组中获取相应的数据,但不知道如何将字符串转换为数组标记查找 我正

我有一个通过ajax函数传递给我的字段名,我需要使用它来查找现有数组中的值。e、 g

$myarray = array(
    'name' => array(
        '0' => array(
            'first' => 'Steve'
        )
    ),
);


$incoming = 'name[0][first]';
因此,使用$incoming变量,我想从数组中获取相应的数据,但不知道如何将字符串转换为数组标记查找

我正试图想出一种方法,不管数组中的嵌套级别如何,都能奏效。

建议#1 更改jQuery以JSON形式发送请求,JSON可以立即转换为PHP数组

建议2 如果无法切换到JSON,请使用拆分传入字段并在其上循环以获取正确的数组元素。大致如下:

$incoming = 'name[0][first]';

$parts = preg_split('/(\[|\])/', $incoming, null, PREG_SPLIT_NO_EMPTY);

$el = $myarray;
foreach ($parts as $part) {
    $el = $el[$part];
}

echo $el; // Steve
建议#1 更改jQuery以JSON形式发送请求,JSON可以立即转换为PHP数组

建议2 如果无法切换到JSON,请使用拆分传入字段并在其上循环以获取正确的数组元素。大致如下:

$incoming = 'name[0][first]';

$parts = preg_split('/(\[|\])/', $incoming, null, PREG_SPLIT_NO_EMPTY);

$el = $myarray;
foreach ($parts as $part) {
    $el = $el[$part];
}

echo $el; // Steve

假设总有3个或更少的键,这将起作用。无论数组有多大,都可以添加“$keyX”变量和“if($numkeys==X)”,但我找不到更灵活的修复方法

$incoming = 'name[0][first]';

$numkeys =  preg_match_all('/[\[]/', $incoming, $matches) + 1;

$split = preg_split('/[[\]]/', $incoming);
$key1 = $split[0];
$key2 = $split[1];
$key3 = $split[3];

if($numkeys == 1) {
echo $myarray[$key1];
} elseif ($numkeys == 2) {
echo $myarray[$key1][$key2];
} elseif ($numkeys == 3) {
echo $myarray[$key1][$key2][$key3];
}

假设总有3个或更少的键,这将起作用。无论数组有多大,都可以添加“$keyX”变量和“if($numkeys==X)”,但我找不到更灵活的修复方法

$incoming = 'name[0][first]';

$numkeys =  preg_match_all('/[\[]/', $incoming, $matches) + 1;

$split = preg_split('/[[\]]/', $incoming);
$key1 = $split[0];
$key2 = $split[1];
$key3 = $split[3];

if($numkeys == 1) {
echo $myarray[$key1];
} elseif ($numkeys == 2) {
echo $myarray[$key1][$key2];
} elseif ($numkeys == 3) {
echo $myarray[$key1][$key2][$key3];
}

您可以使用eval函数。。。即使这是非常不推荐的-尤其是当您为客户端获取字符串时(如果我理解write)

此脚本应打印数组中特定单元格的数据


再次-除非您确保输入的格式符合您的要求,否则不建议这样做…

您可以使用eval函数。。。即使这是非常不推荐的-尤其是当您为客户端获取字符串时(如果我理解write)

此脚本应打印数组中特定单元格的数据


再次-除非您确保输入的格式符合您的要求,否则不建议这样做…

尝试在此处使用explode函数,在您的示例中,在“[”上分解后,name[0][first]将给出一个数组-of(name,0],first])作为列表/数组。丢弃第一个元素,从其余元素中取出“]”部分。稍后,您可以将它们转换为各自的格式-整数、字符串等。

尝试在此处使用explode函数,在您的示例中,在“[”上分解后,名称[0][first]将给出一个数组-of(名称,0],first])作为列表/数组。丢弃第一个元素,从其余元素中取出“]”部分。稍后,您可以将它们转换为各自的格式—整数、字符串等。

$incoming=$myarray['name'][0]['first']
$myarray['name'][0]['first'][0][/code>和
$myarray['name'][0]['first']
同样有效。鉴于OP对该主题的知识水平,我认为不应该提出这一建议。即使有免责声明。根据我提供的信息,针对通过ajax传递的参数运行eval()将是一种安全灾难。我很高兴您理解:)鉴于OP对该主题的知识水平,我认为不应该提出这一建议。即使有免责声明。根据我提供的信息,针对通过ajax传递的参数运行eval()将是一种安全隐患,我很高兴您能理解:)