我使用sql检索表单数据并用php显示它。字段显示为 qualification_0
以及 qualification_type_0
,唯一改变的值是数字,所以我想将这些值分组到一个数组中,然后显示到正确的输入中。
用户可以删除输入,这样数字就不会总是增加1,而是成对发送。
目前
数据显示为:
Array
(
[qualification_0] => Karate
[qualification_2] => Test
[qualification_type_0] => Course
[qualification_type_2] => Certificate
)
目标
我正在努力实现以下目标:
Array
(
[0] => Array
(
[qualification_0] => Karate
[qualification_type_0] => Course
)
[1] => Array
(
[qualification_2] => Test
[qualification_type_2] => Certificate
)
)
我的代码
sql/php语言:
public function getAllSelfDevelopments()
{
global $wpdb;
$table_name = $wpdb->prefix . "usermeta";
$result = $wpdb->get_results(
"
SELECT meta_key, meta_value
FROM $table_name
WHERE user_id = $this->user_id
AND meta_key LIKE 'qualification%'
", ARRAY_A
);
return $result;
}
查询结果:
Array
(
[0] => Array
(
[meta_key] => qualification_0
[meta_value] => Karate
)
[1] => Array
(
[meta_key] => qualification_2
[meta_value] => Test
)
[2] => Array
(
[meta_key] => qualification_type_0
[meta_value] => Course
)
[3] => Array
(
[meta_key] => qualification_type_2
[meta_value] => Certificate
)
)
尝试:
$self_developments = $candidate->getAllSelfDevelopments();
$self_developments_arr = [];
foreach($self_developments as $value){
$self_developments_arr[$value['meta_key']] = $value['meta_value'];
}
$self_dev = [];
foreach($self_developments_arr as $key => $value){
if(strpos($key, $key[-1]) !== FALSE && !in_array($key, $self_dev)){
$self_dev[] = [
$key => $value
];
}
}
任何帮助都将不胜感激。
2条答案
按热度按时间utugiqy61#
这会让你达到你的目标。它涉及到正则表达式的一些高级用法。
应输出:
或者,如果您选择重新编制索引:
c7rzv4ha2#
这个解决方案能解决吗?
它将输出: