【问题标题】:Is there a way I could pass more than a limited amount of arrays through a php function?有没有一种方法可以通过 php 函数传递超过有限数量的数组?
【发布时间】:2016-10-14 13:29:14
【问题描述】:

我有这个函数,它基本上传递不同的数组,但它只能传递长度为 5 的数组。我想知道是否有办法通过这个函数传递各种长度的数组?

输出一次只需要显示一项而不是全部。我有 8 个不同长度的数组,这就是为什么我要制作一个通用函数来传递数组。

function myFunction(&$array){
    //shuffling array contents
    shuffle($array);

    //isolate an array
    if(in_array($array[0], $array)){
        echo $array[0];
    }
    elseif(in_array($array[1], $array)){
        echo $array[1];
    }       
    elseif(in_array($array[2], $array)){
        echo $array[2];
    }
    elseif(in_array($array[3], $array)){
        echo $array[3];
    }
    elseif(in_array($array[4], $array)){
        echo $array[4];
    }
}

【问题讨论】:

  • value 为 5,还是 length 为 5?有区别
  • 数组中的东西怎么可能不在数组中?
  • 我也不确定你为什么要在一个简单的 foreach 迭代所有值时进行所有这些测试
  • 如果您想找出数组中有多少项,那么您需要使用count($your_array_to_get_count_of)。而且您绝对应该为每个都做一个以节省代码行数。
  • 看起来这总是会回显第一个数组项。我认为,如果您提供更多关于它的用途的解释,也许还有一些示例输入/输出,那么在这方面为您提供帮助会更容易。

标签: php html arrays web


【解决方案1】:

我觉得我可能仍然缺少一些东西,但看起来这可以简化为:

function myFunction(&$array){
    //shuffling array contents
    shuffle($array);

    //isolate an array
    echo isset($array[0]) ? $array[0] : '';
}

这将采用任意长度(包括零)的数组,随机播放并回显一项。

【讨论】:

    【解决方案2】:

    为你的函数添加一个参数,例如$len,并使用循环:

    function myFunction(&$array, $len){
        //shuffling array contents
        shuffle($array);
    
        //isolate an array
        for ($i = 0; $i < len; $i++) {
            if(in_array($array[i], $array)){
                echo $array[i];
                break;
            }
        }
    }
    

    这将与您的 if ... elseif ... elseif ... 完全相同。我不知道这应该做什么。我认为他会一直回显$array[0],因此可以简化很多。

    【讨论】:

      【解决方案3】:

      基本上,您希望传递一个包含可变数量数组的数组,然后随机选择其中一个。对吗?

      如果是这样,那么应该这样做:

      $key = array_rand ($array);
      $member = $array[$key];
      

      无需测试成员是否存在,因为它们始终存在。事实上,正如您所见,根本不需要创建自定义函数。 ;)

      【讨论】:

      • array_rand 返回一个数组key
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      相关资源
      最近更新 更多