PHP:获取数组中的第一个和最后一个元素条目及其键

时间:2016-07-08 11:50:11

标签: php arrays

我目前正在处理一些任务,需要获取第一个也是最后一个元素出现的数组键。

示例:

$array = [1,2,3,2,4,1,1,2,3];

getFor(1); // keys 0 and 6
getFor(2); // keys 1 and 7
getFor(3); // keys 2 and 8

我很感激对此的任何帮助。

P.S。简单地预处理数组在这里是无效的,因为对于很长的数组(超过1000000个条目)需要花费太多时间。所以我正在寻找那个不那么明显的解决方案。

此外,getFor返回类型不是必需的,它可以是字符串或两个值的数组。

2 个答案:

答案 0 :(得分:4)

public function postUserAction(Request $request)
{    
    $userManager = $this->get('fos_user.user_manager');

    $email = $request->request->get('email');
    $username = $request->request->get('user');
    $password = $request->request->get('password');


    $email_exist = $userManager->findUserByEmail($email);
    $username_exist = $userManager->findUserByUsername($username);

    if($email_exist || $username_exist){
        $response = new JsonResponse();
        $response->setData("Username/Email ".$username."/".$email." existiert bereits");
        return $response;
    }

    $user = $userManager->createUser();
    $user->setUsername($username);
    $user->setEmail($email);
    $user->setLocked(false); 
    $user->setEnabled(true); 
    $user->setPlainPassword($password);
    $userManager->updateUser($user, true);

    $response = new JsonResponse();
    $response->setData("User: ".$user->getUsername()." wurde erstellt");
    return $response;
}

答案 1 :(得分:1)

这是一个OOP解决方案:

class GetFor
{
    private $Foo[];
    public function __construct(
        array $foo, $bar
    ) {
        $this->Foo = array_keys($foo, $bar);
        return $this->Foo[0] . '-' . $this->Foo[count($this->Foo) -1)];
    }
}

echo new GetFor(
    [0,1,2,3,4,6,3,1,5], 2
);