Php数组不使用变量,但使用直接值

Php数组不使用变量,但使用直接值,php,arrays,Php,Arrays,我正在尝试创建随机团队,所以我使用下面的函数 $candidates = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21); function getTeam($candidates, $team_size = 3) { shuffle($candidates); $teams = array_map(function($chunk){ return implode(",", $chun

我正在尝试创建随机团队,所以我使用下面的函数

 $candidates =
 array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);

function getTeam($candidates, $team_size = 3)
{
    shuffle($candidates);
    $teams = array_map(function($chunk){
        return implode(",", $chunk);
    }, array_chunk($candidates, $team_size));

    return implode("\n", $teams);
}

$ss = print_r(getTeam($candidates)); 
上述代码的输出与我的输出一样工作正常

8,5,6,3,15,1,2

但如果我在代码下工作

 $np="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21";

 $candidates = array($np);
           function getTeam($candidates, $team_size = 3) {
 shuffle($candidates);
 $teams = array_map(function($chunk){
     return implode(",", $chunk);
 }, array_chunk($candidates, $team_size));

 return implode("\n", $teams); }

 $ss = print_r(getTeam($candidates));
然后我得到的就是这个输出

产量:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21


我不知道为什么它不起作用每次都是一样的,只是我做了一点小小的改变,问题是你的候选对象是一个字符串而不是数组,所以你需要在将它传递给函数之前将其设置为数组,所以你需要做的是

<?php 
$np="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21";
$candidates = explode(',',$np);
print_r($candidates);
function getTeam($candidates, $team_size = 3) {
    shuffle($candidates);
    $teams = array_map(function($chunk){
    return implode(",", $chunk);
    },
    array_chunk($candidates, $team_size));
    return implode("\n", $teams); 
}
 print_r(getTeam($candidates));
?>


这很好用。您需要分解字符串

问题是您的候选对象是字符串而不是数组,所以在将其传递给函数之前需要将其设置为数组,所以您需要做的是

<?php 
$np="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21";
$candidates = explode(',',$np);
print_r($candidates);
function getTeam($candidates, $team_size = 3) {
    shuffle($candidates);
    $teams = array_map(function($chunk){
    return implode(",", $chunk);
    },
    array_chunk($candidates, $team_size));
    return implode("\n", $teams); 
}
 print_r(getTeam($candidates));
?>


这很好用。您需要分解字符串

Php数组接受混合参数

就你而言

数组(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21)带有21个参数

$np=“1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21”$候选者=数组($np)仅接受一个参数

“1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21”
不同于
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,19,20,21

要从分隔符分隔的字符串创建数组,请使用
分解

数组([mixed$…]):数组

语法“index=>values”,用逗号分隔,定义索引和值。索引的类型可以是string或integer。如果省略索引, 从0开始,将自动生成整数索引。如果索引 是一个整数,下一个生成的索引将是最大的整数索引 + 1. 请注意,当定义两个相同的索引时,最后一个索引将覆盖第一个索引

在最后一个定义的数组项后面有一个尾随逗号是一种有效的语法,尽管这很少见


Php数组接受混合参数

就你而言

数组(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21)带有21个参数

$np=“1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21”$候选者=数组($np)仅接受一个参数

“1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21”
不同于
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,19,20,21

要从分隔符分隔的字符串创建数组,请使用
分解

数组([mixed$…]):数组

语法“index=>values”,用逗号分隔,定义索引和值。索引的类型可以是string或integer。如果省略索引, 从0开始,将自动生成整数索引。如果索引 是一个整数,下一个生成的索引将是最大的整数索引 + 1. 请注意,当定义两个相同的索引时,最后一个索引将覆盖第一个索引

在最后一个定义的数组项后面有一个尾随逗号是一种有效的语法,尽管这很少见

试试这个
只需在$np中传递数组并在$candidates中使用

$np=数组(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);
$candidates=$np;
函数getTeam($candidates,$team\u size=3){
洗牌(候选人);
$teams=数组\映射(函数($chunk){
返回内爆(“,”,$chunk);
},数组块($candidates,$team_size));
返回内爆(“\n”,$teams);}
$ss=打印(获取团队($候选者))试试这个
只需在$np中传递数组并在$candidates中使用

$np=数组(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);
$candidates=$np;
函数getTeam($candidates,$team\u size=3){
洗牌(候选人);
$teams=数组\映射(函数($chunk){
返回内爆(“,”,$chunk);
},数组块($candidates,$team_size));
返回内爆(“\n”,$teams);}

$ss=打印(获取团队($候选者))如果要将逗号分隔的字符串用作数组,则需要分解该字符串。如果要将其用作数组,则需要分解逗号分隔的字符串。