在PHP中获取多维数组的索引名
我有一个带有多个输入字段的表单,这些字段被序列化并通过AJAX传递给函数。在函数内部,我有以下形式的数据。我需要将在PHP中获取多维数组的索引名,php,arrays,regex,wordpress,indexing,Php,Arrays,Regex,Wordpress,Indexing,我有一个带有多个输入字段的表单,这些字段被序列化并通过AJAX传递给函数。在函数内部,我有以下形式的数据。我需要将簿记员、出版公司和1作为单独的变量 // $key = '_data' // $values = {"name":"_data[Book-Keeper][publish_companies]","value":"1"} 这是函数代码 function fnc_edit_roles(WP_REST_Request $request) { $variables = $_REQ
簿记员
、出版公司
和1
作为单独的变量
// $key = '_data'
// $values = {"name":"_data[Book-Keeper][publish_companies]","value":"1"}
这是函数代码
function fnc_edit_roles(WP_REST_Request $request) {
$variables = $_REQUEST;
// Get all $_POST variables into $data[] array with key=>value
if( $variables ) {
while ( list( $field, $value ) = each( $_REQUEST )) {
if( $field !== '_nonce' ) {
$data[$field] = $value;
}
} // end while
} // end if
foreach( $data as $key=>$values ) {
// $key = '_data'
// $values = {"name":"_data[Book-Keeper][publish_companies]","value":"1"}
// How do I get 'Book-Keeper', 'publish_companies', and '1' into separate variables?
}
$result = array( 'msg' => $data, 'error' => false );
return json_encode( $result );
}
下面是我如何获得HTML中的输入
<form id="_user_roles_form" method="post" class="form-horizontal">
<div class="form-group row">
<label class="col-lg-6 control-label">Publish Companies</label>
<div class="col-lg-6">
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-default active">
<input type="radio" name="_data[Book-Keeper][publish_companies]" value="1"/> True
</label>
<label class="btn btn-default ">
<input type="radio" name="_data[Book-Keeper][publish_companies]" value="0"/> False
</label>
</div>
</div>
</div>
</form>
长问题短问题,我如何从字符串
中获取簿记员
和发布公司
\u数据[簿记员][发布公司]
<代码>键或数组\u键
在这里不起作用…试试这个,希望这能帮到你。这里我们使用正则表达式:\[([\w\-]+)\]
,它将匹配示例:[something-some\u值]
试试这个,希望它能帮助你。这里我们使用正则表达式:
\[([\w\-]+)\]
,它将匹配示例:[something-some\u值]
@Donsgan您可以共享获取索引名称的数组吗?@SahilGulati数组([Book Keeper]=>array([publish_Companys]=>1));这就是我通过PHP打印得到的结果,它后来被序列化并用javascript传递给AJAX。“你想
簿记员和发布公司吗?或者仅仅是簿记员
?你能告诉我这是样本/$key='\u data'/$values={“name”:“\u data[Book Keeper][publish\u companys]”,“value”:“1”}
?比如说,我需要簿记员
进入$role\u name,发布公司
进入$cap\u name。是的,这是我在传递序列化数组的函数中得到的实际示例。现在,我使用str\u replace
和explode
将它们放入单独的变量中,但我想有一个合适的方法来处理这个问题。请告诉我一些情况。@Donsgan你能分享获取索引名称的数组吗?@SahilGulati数组([Book Keeper]=>数组([publish_Companys]=>1));这就是我通过PHP打印得到的结果,它后来被序列化并用javascript传递给AJAX。“你想簿记员和发布公司吗?或者仅仅是簿记员
?你能告诉我这是样本/$key='\u data'/$values={“name”:“\u data[Book Keeper][publish\u companys]”,“value”:“1”}
?比如说,我需要簿记员
进入$role\u name,发布公司
进入$cap\u name。是的,这是我在传递序列化数组的函数中得到的实际示例。现在,我使用str\u replace
和explode
将它们放入单独的变量中,但我想有一个合适的方法来处理这个问题。请给我点启示。谢谢我的天才朋友。谢谢我的天才朋友。
var _data = jQuery('#_user_roles_form').serializeArray();
jQuery.ajax({
url: myAjaxUrl,
type: 'POST',
data: _data,
success: function( json ) {
var result = JSON.parse( json );
console.log( result.msg );
}
});
ini_set('display_errors', 1);
foreach ($data as $key => $values)
{
//$key = '_data';
//$values = '{"name":"_data[Book-Keeper][publish_companies]","value":"1"}';
$array = json_decode($values, true);
$value = $array["value"];//will contain value
preg_match_all("/\[([\w\-]+)\]/", $array["name"], $matches);
list($role_name,$cap_name)=$matches[1];
echo $role_name;//will contain role name
echo $cap_name;//will contain company name
}