前一段时间在求职面试中,我得到了在不使用PHP的情况下在PHP中反转字符串的任务strrev.
我的第一个解决方案是这样的:
$s = 'abcdefg';
$temp = '';
for ($i = 0, $length = mb_strlen($s); $i < $length; $i++) {
$temp .= $s{$length - $i - 1};
}
var_dump($temp);
// outputs string(7) "gfedcba"
Run Code Online (Sandbox Code Playgroud)
然后他们问我是否可以在不增加内存使用量的情况下这样做(不使用$temp变量或任何变量来复制反转的字符串)并且我失败了.这一直困扰着我,从那时起我试图多次解决这个问题,但我经常失败.
我的最新尝试看起来像这样:
$s = 'abcdefg';
for ($i = 0, $length = mb_strlen($s); $i < $length; $i++) {
$s = $s{$i * 2} . $s;
}
var_dump($s);
// outputs string(14) "gfedcbaabcdefg"
Run Code Online (Sandbox Code Playgroud)
它不是在循环之后切断"abcdefg"的解决方案,因为那时我仍然会使用的内存量增加一倍.我需要在循环的每次迭代中删除最后一个字符.
我试着mb_substr像这样使用:
$s = 'abcdefg';
for ($i …Run Code Online (Sandbox Code Playgroud) 我编写了自己的密码编码器,它实现了PasswordEncoderInterface:
class BCryptPasswordEncoder implements PasswordEncoderInterface {
protected $encoder;
public function __construct(BCryptEncoder $encoder) {
$this->encoder = $encoder;
}
public function encodePassword($raw, $salt) {
return $this->encoder->encodeString($raw, $salt);
}
public function isPasswordValid($encoded, $raw, $salt) {
return $this->encoder->encodeString($raw, $salt) == $encoded;
}
}
Run Code Online (Sandbox Code Playgroud)
编码器注册为具有id的服务bcrypt.password.encoder.但我不知道,如何告诉symfony使用它.目前app/config/security.yml看起来像这样:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
neo4j:
id: security.user.provider.neo4j
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
secured_area:
provider: neo4j
pattern: ^/.*
form_login:
check_path: /login_check
login_path: /login
logout:
path: /logout …Run Code Online (Sandbox Code Playgroud) 我在src/MaintenanceBundle/Command中创建了一个新类,将其命名为GreetCommand.php并将以下代码放入其中:
<?php
namespace SK2\MaintenanceBundle\Command;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class GreetCommand extends ContainerAwareCommand
{
protected function configure()
{
$this
->setName('maintenance:greet')
->setDescription('Greet someone')
->addArgument('name', InputArgument::OPTIONAL, 'Who do you want to greet?')
->addOption('yell', null, InputOption::VALUE_NONE, 'If set, the task will yell in uppercase letters')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$name = $input->getArgument('name');
if ($name) {
$text = 'Hello '.$name;
} else {
$text = 'Hello';
}
if ($input->getOption('yell')) {
$text = strtoupper($text);
} …Run Code Online (Sandbox Code Playgroud) 我的数组$ strs [$ key] [$ id]的var_dump给出了以下结果:
array(2) {
[0]=> array(4) {
[8259]=> string(8260) "ouvrir 1"
[8260]=> string(8261) "fichier 2"
[8261]=> string(8262) "quitter 1"
[8262]=> string(8263) "lire 2"
}
[1]=> array(4) {
[8259]=> string(8260) "lancer 2"
[8260]=> string(8261) "dossier 1"
[8261]=> string(8262) "exit 1"
[8262]=> string(8263) "lire 2"
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我想要从所有$ key获得所有带有相同$ id的字符串.像这样:
1-
ouvrir 1
lancer 2
2-
fichier 2
lancer 2
等等
我在我的树枝视图中试过这个:
{% for key,val in strs['key']['id'] %}
{% if strs['key']['id'] is defined %}
{{ key }} - …Run Code Online (Sandbox Code Playgroud) 是否在创建自定义服务之后但在调用控制器操作之前触发了事件?
是否有Symfony2中所有事件的完整列表?
我在VisualStudio2012 ASP.Net空网站模板中开发了一个使用HTML页面的网站.在我的网站上,我正在寻找联系我们页面,该页面将发送电子邮件.可以从.HTML PAGE使用ASP.Net发送电子邮件吗?
我知道从.ASPX页面发送电子邮件,其中可能包含ASP控件或使用ASP.Net的HTML控件.
我在这里寻找,仅从.HTML页面发送电子邮件.
更具体地说,我有一个sendemail()方法,我需要从.HTMl页面传递电子邮件地址和电子邮件内容.怎么可以实现?
提前致谢.