【问题标题】:PHP Closure - Return an array with key / valuePHP Closure - 返回一个带有键/值的数组
【发布时间】:2021-05-13 23:18:25
【问题描述】:

我使用 DomCrawler 抓取一些数据,我想知道是否可以从闭包中获取数组,这是我的代码:

    $promises = $products
        ->each(function(Crawler $node) use ($client, $cookieJar) {
            $href = $node->filter('a')->last()->attr('href');

            return [
                $href => $client->getAsync($this->config['url'] . $href, [
                    'cookies' => $cookieJar,
                ])
            ];
        });

它会像这样返回我:

$promises = [
   ['href_value' => Guzzle\Promise],
   ....
 ];

但我想要:

$promises = [
   'href_value' => Guzzle\Promise,
   ....
 ];

我怎样才能将返回语句转换成这样的结果,在我的脑海中是这样的:

return ($href) => $client->getAsync($this->config['url'] . $href, [
        'cookies' => $cookieJar,
    ]);

【问题讨论】:

  • 嵌套是有原因的,因为它可能返回多个,显然键必须是唯一的。只需使用 reset 重新分配它或指向索引零

标签: php arrays foreach php-7


【解决方案1】:

将您的 $promises 转换为平面数组:

$flatPromises = [];

foreach ($promises as $promise) {
    foreach ($promise as $key => $value) {
         $flatPromises[$key] = $value;
    }
}

【讨论】:

  • 是的,这是我现在使用的解决方案(略有不同),但如果可能,我想避免这一步
猜你喜欢
  • 2013-07-08
  • 2019-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多