在 PHP 世界中,在 HTML 表单中执行以下操作是非常正常和正常的:
<input type="text" name="data[name][first]" />
<input type="text" name="data[name][last]" />
<input type="text" name="data[address][street]" />
<input type="text" name="data[address][city]" />
然后,在你的$_POST
变量中,你会得到一个类似这样的数组:
data = array (
'name' => array (
'first' => value,
'last' => value
),
'address' => array (
'street' => value,
'city' => value
)
然后,您可以使用 var 中的这些名称来访问它们,即$firstName = $_POST['data']['name']['first'];
.
我的问题是这在 Wordpress 中根本不起作用。我得到的错误是该trim()
函数不能在数组上使用。
parse_query
我已经追踪了“为什么”它确实适用于对象函数中的以下代码WP_Query
:
$qv['p'] = absint($qv['p']);
$qv['page_id'] = absint($qv['page_id']);
$qv['year'] = absint($qv['year']);
$qv['monthnum'] = absint($qv['monthnum']);
$qv['day'] = absint($qv['day']);
$qv['w'] = absint($qv['w']);
$qv['m'] = absint($qv['m']);
$qv['paged'] = absint($qv['paged']);
$qv['cat'] = preg_replace( '|[^0-9,-]|', '', $qv['cat'] ); // comma separated list of positive or negative integers
$qv['pagename'] = trim( $qv['pagename'] );
$qv['name'] = trim( $qv['name'] ); /* Throws trim() error on array! */
if ( '' !== $qv['hour'] ) $qv['hour'] = absint($qv['hour']);
if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']);
if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']);
if ( '' !== $qv['menu_order'] ) $qv['menu_order'] = absint($qv['menu_order']);
谁能想到一种在 WordPress 中正确使用数组作为字段名称的方法?在 WP 之外似乎是一种常见的做法,但在其中却是不可能的?也许表单名称可以替代“最佳实践”?