如何将LibIds函数返回值传入API查询的数组参数中?
如何将LibIds函数的返回值传入API查询的id参数?
首先,你当前的LibIds函数是直接输出处理后的ID字符串,而不是返回它——这就是为什么你没法直接把它用到$api->query的参数里。我们需要先修改这个函数,让它返回我们需要的ID列表,然后再把这个返回值传入API查询。
步骤1:修改LibIds函数,让它返回值
原来的函数用了输出缓冲区然后直接echo结果,我们把它改成返回处理后的字符串,同时处理没有数据的情况(避免返回null):
function LibIds() { $rows = get_field('library_add_ids'); $output = ''; if($rows) { foreach($rows as $row) { $output .= $row['id'].','; } // 移除最后一个多余的逗号 $output = rtrim($output, ','); } // 返回处理后的ID字符串,没有数据时返回空字符串 return $output; }
我去掉了原来函数里没用的$output参数,同时把输出缓冲区的用法简化了——直接用字符串拼接更直观,最后返回处理好的结果。
步骤2:将函数返回值传入API查询
现在你可以直接调用LibIds()函数,把它的返回值赋值给query方法数组里的id字段:
$res = $api->query('bibs', array( 'id' => LibIds(), // 这里直接用函数返回值替换固定字符串 'fields' => 'id,updatedDate,createdDate,deletedDate,deleted,suppressed,available,lang,title,author,materialType,bibLevel,pub...' ));
这样当LibIds()返回"1000001,1000002"时,就会自动替换到id参数的位置,完全符合你的需求。
额外说明
- 如果
get_field('library_add_ids')没有返回数据,LibIds()会返回空字符串,这时候API查询的id参数就是空的——你可以根据实际需求调整这种情况的处理(比如给个默认ID,或者跳过查询)。 - 原来的输出缓冲区用法不是必须的,直接字符串拼接更高效也更容易维护。
内容的提问来源于stack exchange,提问作者user1467735
相关产品推荐
相关产品推荐

