Php 如何确定数组中设置值或非设置值的数量

Php 如何确定数组中设置值或非设置值的数量,php,arrays,laravel,Php,Arrays,Laravel,我有以下功能: public function searchsubject(){ $subject1 = Input::get('subject1'); $subject2 = Input::get('subject2'); $subject3 = Input::get('subject3'); $subject4 = Input::get('subject4'); //if a single subject is ch

我有以下功能:

public function searchsubject(){

         $subject1 = Input::get('subject1');
         $subject2 = Input::get('subject2');
         $subject3 = Input::get('subject3');
         $subject4 = Input::get('subject4');

//if a single subject is chosen

return Redirect::route('home', array('subject1' => $subject1, 'subject2' => 
$subject2, 'subject' => $subject3, 'subject' => $subject4));

//if two subjects are chosen

return Redirect::route('hometwo', array('subject1' => $subject1, 'subject2' 
=> $subject2, 'subject' => $subject3, 'subject' => $subject4));

//if three subjects are chosen

return Redirect::route('homethree', array('subject1' => $subject1,   'subject2' =>
        $subject2, 'subject' => $subject3, 'subject' => $subject4));
我的目标是将用户重定向到三个URL中的任意一个

  • 如果用户选择一个主题,则url为1
  • 如果用户选择两个主题,则url为2
  • 如果用户选择三个主题,则url为三
  • 问题是我将如何实现这一点


    我的想法是将所有这些值放入一个数组中,检查其中有多少值并相应地重定向,但这是如何做到的?

    您可以尝试类似的方法,首先获取主题:

    $subjects = [];
    $inputs = Input::all();
    array_walk($inputs, function ($v, $k) use (&$subjects) {
        if(starts_with($k, 'subject')) {
            $subjects[$k] = $v;
        }
    });
    
    现在您有了所有以
    主题
    开头的
    输入/字段
    ,例如:
    主题1
    主题2
    等等。现在,只需获得
    $subjects
    的计数,如:

    $index = count($subjects);
    
    现在您可以使用,例如:

    // Keep this array pre-defined, could be a class property, if so then use $this->urls
    $urls = ['zero', 'url-for-one-subject', 'url-for-two-subjects', 'url-for-three-subjects'];
    
    // Redirect now using $urls[$index]
    return Redirect::route($urls[$index)->with($subjects);
    

    您可以尝试以下方法,首先获取主题:

    $subjects = [];
    $inputs = Input::all();
    array_walk($inputs, function ($v, $k) use (&$subjects) {
        if(starts_with($k, 'subject')) {
            $subjects[$k] = $v;
        }
    });
    
    现在您有了所有以
    主题
    开头的
    输入/字段
    ,例如:
    主题1
    主题2
    等等。现在,只需获得
    $subjects
    的计数,如:

    $index = count($subjects);
    
    现在您可以使用,例如:

    // Keep this array pre-defined, could be a class property, if so then use $this->urls
    $urls = ['zero', 'url-for-one-subject', 'url-for-two-subjects', 'url-for-three-subjects'];
    
    // Redirect now using $urls[$index]
    return Redirect::route($urls[$index)->with($subjects);
    

    我得到一个错误,说undefined function Redirect()。我用的是Laravel4.2BTWI,我以为我已经破解了,但是没有。重定向im传递是带有($subjects)的
    ->
    是一个数组。我需要将其作为字符串传递,以便在另一页上使用该值。我该怎么做?更新了答案@MarkusSmith:-)如果我用的是4.2,它是一样的吗?对不起,伙计,你第一次是对的。我有一只愚蠢的虫子。终于完成了@AlphaI收到一个错误,称为undefined function Redirect()。我用的是Laravel4.2BTWI,我以为我已经破解了,但是没有。重定向im传递是带有($subjects)的
    ->
    是一个数组。我需要将其作为字符串传递,以便在另一页上使用该值。我该怎么做?更新了答案@MarkusSmith:-)如果我用的是4.2,它是一样的吗?对不起,伙计,你第一次是对的。我有一只愚蠢的虫子。终于完成了@阿尔法