对 for 循环中的内部调用有相同的响应

Same response on internal call in for loop

我正在使用 Wordpress 作为后端,并且正在为应用程序格式化一些存储的数据。我调用了一个 for 循环来聚合数据,但响应似乎是相同的,即使我确保调用的 URL 是不同的。


  foreach ($data as $attr) {
      if (in_array(strtolower($attr['name']), $array)) {
            $list = $this->getAttributeTerms($attr['id']);
            $attributes[strtolower($attr['name'])] = $list;
      }
   }

/*...*/

  private function getAttributeTerms($attributeID)
    {
        $request = new WP_REST_Request('GET', '/wc/v3/products/attributes/' . $attributeID . '/terms');

        $resp = rest_get_server()->dispatch($request)->data;

        var_dump('/wc/v3/products/attributes/' . $attributeID . '/terms');
        var_dump($resp);

        return array_map(function ($val) {
            return ['id' => $val['id'], 'name' => $val['name']];
        },  $resp);
    }

响应是第一个调用的值 getAttributeTerms 而不是每次都不同,这不是我期望的。

我没有以这种方式获取属性项,我现在意识到这有点矫枉过正,我最终使用 get_terms 函数来 return 必要的数据。

function slimTaxonomyData($el)
{
    return ['id' => $el->term_id, 'name' => $el->name];
}

return [
   'taxA' => array_map('slimTaxonomyData', get_terms(['taxonomy' => 'tax_a_tag', 'orderby' => 'name'])),
   'taxB' => array_map('slimTaxonomyData', get_terms(['taxonomy' => 'tax_b_tag', 'orderby' => 'name'])),
];