Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP map()相当于将$\u POST变量解析为关联数组_Php_Arrays - Fatal编程技术网

PHP map()相当于将$\u POST变量解析为关联数组

PHP map()相当于将$\u POST变量解析为关联数组,php,arrays,Php,Arrays,我需要解析使用jQuery动态创建的$\u POST表单变量。变量有一个共同的结构,即text_id。例如: $_POST[ 'my_app_custom_size_23' ] = large $_POST[ 'my_app_custom_color_23' ] = red $_POST[ 'my_app_custom_style_23' ] = classic $_POST[ 'my_app_custom_size_719' ] = medium $_

我需要解析使用jQuery动态创建的$\u POST表单变量。变量有一个共同的结构,即text_id。例如:

$_POST[ 'my_app_custom_size_23' ]       = large
$_POST[ 'my_app_custom_color_23' ]      = red
$_POST[ 'my_app_custom_style_23' ]      = classic
$_POST[ 'my_app_custom_size_719' ]      = medium
$_POST[ 'my_app_custom_color_719' ]     = black
$_POST[ 'my_app_custom_style_719' ]     = modern
$_POST[ 'my_app_custom_size_501' ]      = large
$_POST[ 'my_app_custom_color_501' ]     = white
$_POST[ 'my_app_custom_style_501' ]     = classic
请注意末尾的数字ID-23719和501。它们需要用作关联数组中的键,例如:

$my_arr = array(
    '23' => array(
        'size'    =>  'large',
        'color'   =>  'red',
        'style'   =>  'classic'
        ),
    '719' => array(
        'size'    =>  'medium',
        'color'   =>  'black',
        'style'   =>  'modern'
        ),
    '501' => array(
        'size'    =>  'large',
        'color'   =>  'white',
        'style'   =>  'classic'
        )
    );
因此,我可以参考以下类似的数据:

$size = $my_arr['719']['size']
每个变量以一个可预测的名称开始,以一个下划线和一个重要的数字id结束

如何使用PHP实现这一点

一个小问题(尽管这个正则表达式是):


您可以简单地在数组中循环并使用函数


你有一些起始代码给我们看吗?最简单的方法是,按
'
分解
,并使用结果中的最后一个和倒数第二个值索引到数组中。稍微精细一点的解决方案可以使用正则表达式。@veve不,我不使用。我开始编写一个
foreach
循环,但我不知道如何到达我需要的地方。这根本不是一个好的起点。我认为通过单个数组发送/接收变量可能更容易。@LefsFlare您的意思是在表单字段中使用关联数组ID吗?
$keys[3]
可能有点不可靠,
count($keys)-2
更好。
foreach ($_POST as $key => $value) {
    if (preg_match('/([^_]+)_([^_]+)$/', $key, $match)) {
        echo $my_arr[$match[2]][$match[1]];
    }
}
foreach ($_POST as $k => $v) {
    $keys = explode('_', $k);  // Results in Array ( [0] => my [1] => app [2] => custom [3] => size [4] => 23 ) 
    /* end($keys) would retrieve the last value i.e 23 for first one $keys[3] retrieves result like size, color etc. */
    $result[end($keys)][$keys[3]] = $v; 
}