我想得到一个JSON对象,比如[{"Video link": "https://www.youtube.com/watch?v=r",....},...]
来自带有“标签”的表单条目。现在我正在使用此代码
$form_id = \'1\';
$form = GFAPI::get_form( $form_id );
$labels = [];
foreach ($form[\'fields\'] as $key => $value) {
$labels[$value[\'id\']] = $value[\'label\'];
}
$data = [];
$i = 0;
$entries = GFAPI::get_entries($form_id);
foreach ($entries as $entry) {
foreach ($entry as $key => $value) {
if(isset($labels[$key])){
$data[$i][$labels[$key]] = $value;
}else{
$data[$i][$key] = $value;
}
}
$i++;
}
echo \'<script>const data = \'.json_encode($data).\'</script>\';
问题在于自定义字段标签名称,如
["id"]=> int(11) ["label"]=> string(10) "Video link"
. 因此,我必须将它们放入$标签数组中,如[11]=>“视频链接”,然后使用$条目运行2个循环,以创建一个新的数组$数据。有什么简单的方法可以做到这一点吗?
最合适的回答,由SO网友:Dave from Gravity Wiz 整理而成
我不确定有多少可以做的来真正简化这个。。。你对需要做什么肯定有正确的想法。这里有一个例子,您可能会考虑通过删除而不是预取标签来简化它。这种简单的版本性能较差,可以忽略不计。
$form_id = \'1\';
$form = GFAPI::get_form( $form_id );
$entries = GFAPI::get_entries( $form_id );
$data = [];
foreach ( $entries as $index => $entry ) {
foreach ( $entry as $key => $value ) {
$field = GFAPI::get_field( $form, $key );
$label = $field ? $field->get_field_label( false, \'\' ) : $key;
$data[ $i ][ $label ] = $value;
}
$i++;
}
echo \'<script>const data = \' . json_encode( $data ) . \'</script>\';