如何使用存储为字符串的输入字段名作为php数组标记
我有一个通过ajax函数传递给我的字段名,我需要使用它来查找现有数组中的值。e、 g如何使用存储为字符串的输入字段名作为php数组标记,php,Php,我有一个通过ajax函数传递给我的字段名,我需要使用它来查找现有数组中的值。e、 g $myarray = array( 'name' => array( '0' => array( 'first' => 'Steve' ) ), ); $incoming = 'name[0][first]'; 因此,使用$incoming变量,我想从数组中获取相应的数据,但不知道如何将字符串转换为数组标记查找 我正
$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()将是一种安全隐患,我很高兴您能理解:)