相关疑难解决方法(0)

PHP数组函数,返回给定键的子集

我正在寻找一个像这样的数组函数:

$myArray = array(
  'apple'=>'red',
  'banana'=>'yellow',
  'lettuce'=>'green',
  'strawberry'=>'red',
  'tomato'=>'red'
);
$keys = array(
  'lettuce',
  'tomato'
);

$ret = sub_array($myArray, $keys);
Run Code Online (Sandbox Code Playgroud)

$ ret是:

array(
  'lettuce'=>'green',
  'tomato'=>'red'
);
Run Code Online (Sandbox Code Playgroud)

一个没有问题,我自己写下来,我想避免foreach循环并采用内置函数或内置函数的组合.在我看来,这是一个通用的和常见的数组操作 - 如果循环是唯一的选择,我会感到惊讶.

php arrays built-in higher-order-functions

25
推荐指数
2
解决办法
6410
查看次数

使用preg_replace时如何增加替换字符串中的计数?

我有这个代码:

$count = 0;    
preg_replace('/test/', 'test'. $count, $content,-1,$count);
Run Code Online (Sandbox Code Playgroud)

对于每次替换,我获得test0.

我想得到test0,test1,test2等.

php regex string preg-replace

10
推荐指数
2
解决办法
9840
查看次数

PHP array_filter中的未定义变量

这可能是一个非常愚蠢的问题,但我无法理解PHP范围如何处理这段代码:

$leagueKey = 'NFL';
$response['response'] = array_filter($response['response'], function($tier){
    return ($tier['LeagueKey'] === $leagueKey ? true : false);
});
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到一个"Undefined variable:leagueKey"异常.另一方面,这非常有效:

$response['response'] = array_filter($response['response'], function($tier){
    return ($tier['LeagueKey'] === 'NFL' ? true : false);
});
Run Code Online (Sandbox Code Playgroud)

为什么PHP不能在array_filter函数中看到我的$ leagueKey变量?

谢谢!

php array-filter

3
推荐指数
2
解决办法
2516
查看次数

如何使用 Slim-Skeleton 中演示的 PHP-DI 设置访问 slim4 的routeParser?

我已经基于 SlimPHP 团队的Slim Skeleton应用程序设置了一个新应用程序。在我的路由定义中,我希望能够访问Slim4 文档 中所述的路由解析器。因此,例如,我希望能够编辑骨架的app/routes.php文件,如下所示:

    $app->get('/', function (Request $request, Response $response) {
        $routeParser = $app->getRouteCollector()->getRouteParser();  // this doesn't work
        $response->getBody()->write('Hello world! ' . $routeParser->urlFor('something'));
        return $response;
    });
Run Code Online (Sandbox Code Playgroud)

这是有道理的,但$app->getRouteCollector()->getRouteParser()不起作用,因为$app这里没有定义。但我认为我们应该调用$this->getRouteCollector()->getRouteParser();,但这会给出错误:"Call to undefined method DI\\Container::getRouteCollector()"

看来我的困惑显然​​是关于依赖注入,这对我来说是新的,而且对我来说并不自然。老实说,我很想在其他地方定义 $routeParser 变量(在 index.php 内?),这样我就可以在任何路由定义中访问它,而不必每次都调用 $app->getRouteCollector()->getRouteParser() 。但目前我会满足于任何有效的方法。

php slim php-di slim-4

3
推荐指数
1
解决办法
1766
查看次数