Php 我想使用循环将元素随机添加到数组中

Php 我想使用循环将元素随机添加到数组中,php,Php,我想使用循环将元素随机添加到数组中 我有一个固定的等级,如下所示 $ranks=array("10","9","8","7","6","5","4","3","2","1"); 根据一条链,我有一个随机的排名位置 $agent_ranks=array("10","6","2","1"); 哪些是缺少的索引 我已经计算了数组之间的差异 $arr_diff=array("9","8","7","5","4","3"); 现在我想要一个动态数组作为结果: $arr_diff_new=array(

我想使用循环将元素随机添加到数组中

我有一个固定的等级,如下所示

$ranks=array("10","9","8","7","6","5","4","3","2","1");
根据一条链,我有一个随机的排名位置

$agent_ranks=array("10","6","2","1");
哪些是缺少的索引

我已经计算了数组之间的差异

$arr_diff=array("9","8","7","5","4","3");
现在我想要一个动态数组作为结果:

$arr_diff_new=array("0","9","8","7","0","5","4","3","0","0");
如何在缺少的索引处添加
value=“0”

<?php
$ranks=array("10","9","8","7","6","5","4","3","2","1");
$agent_ranks= array_flip( array("10","6","2","1") );

foreach( $ranks as $k=>$v ) {
    if ( isset($agent_ranks[$v]) ) {
        $ranks[$k] = 0;
    }
}

var_export($ranks);

另请参见:

您也可以在if子句中使用数组中的
,检查秩是否为int
$agent\u秩
,然后将0或旧秩值推送到新数组

$arr_diff_new = array();
foreach($ranks as $rank){
    array_push($arr_diff_new,(in_array($rank,$agent_ranks))?0:$rank);
}

您可以使用数组中的
和for循环执行此操作:

$ranks=array("10","9","8","7","6","5","4","3","2","1");
$agent_ranks=array("10","6","2","1");

for($i=0;$i < count($ranks); $i++){
    if(in_array($ranks[$i], $agent_ranks)){
        $newarray[$i] = 0;
    }else{
        $newarray[$i] = $ranks[$i];
    }
}
print_r($newarray);
$ranks=数组(“10”、“9”、“8”、“7”、“6”、“5”、“4”、“3”、“2”、“1”);
$agent_秩=数组(“10”、“6”、“2”、“1”);
对于($i=0;$i
您可以使用数组函数数组映射

<?php
$array1=array("10","9","8","7","6","5","4","3","2","1");
print_r(array_map('filter',$array1));
function filter($a){
 $array2=array("9","8","7","5","4","3");
 if(in_array($a,$array2)){
    return $a;
 }else{
    return 0;
 }
}

只需将
foreach
循环一起使用

$ranks=array("10","9","8","7","6","5","4","3","2","1");
$agent_ranks=array("10","6","2","1");
$result = array();
foreach($ranks as $key => $value){
    $result[] = in_array($value,$agent_ranks) ? 0 : $value;
}
print_r($result);

创建一个新数组,遍历列组,根据缺失索引xbtw中是否存在值,将其添加到0或数字中:位置的随机性是什么?无需使用像as
array\u flip
array\u flip比array\u flip更“额外”的是什么?顺便说一句:也不需要使用foreach。它简单方便@VivekSrivastava:如果是工作,那么就放弃投票和标记作为答案,这样其他用户就会信任标记答案。
$ranks=array("10","9","8","7","6","5","4","3","2","1");
$agent_ranks=array("10","6","2","1");
$result = array();
foreach($ranks as $key => $value){
    $result[] = in_array($value,$agent_ranks) ? 0 : $value;
}
print_r($result);