如何对以下php代码进行逻辑实现


How to make a logical implementation of the below php code?

我需要这样的输出。你能帮我解决这个问题吗?

a-1,2,4 
b-3

对于以下代码:

<?php
    $paytype = array('a','a','b','a');
    $payno= array(1,2,3,4);
    for($i=0;$i<count($paynum);$i++){
        $paytypes = $paytype[$i];
        $paynum = $payno[$i];
    }
?>

请帮助

只需像这样使用array_unique、array_map和array_keys:

<?php
$paytype = array('a','a','b','a');
$payno= array(1,2,3,4);
$uniqArr = array_unique($paytype);  //Get all the unique value from array
foreach ($uniqArr as $value) {
    echo $value . "-" . implode(",",array_map("matchVal",array_keys($paytype,$value)))."<br/>"; 
}
function matchVal($x) {
    global $payno;
    return $payno[$x];
}

输出:

a-1,2,4
b-3

演示

你可以试试这个:

<?php
    $paytype = array('a','a','b','a');
    $payno= array(1,2,3,4);
    $newArr = array();
    for($i=0;$i<count($paytype);$i++){
        if(!isset($newArr[$paytype[$i]])) {
            $newArr[$paytype[$i]] = $payno[$i];
        } else {
            $newArr[$paytype[$i]] = $newArr[$paytype[$i]].",".$payno[$i];
        }
    }
    print '<pre>';print_r($newArr);
?>

输出:

Array
(
    [a] => 1,2,4
    [b] => 3
)

另一种选择:-

只需使用一个简单的foreach循环:-

$paytype = ['a','a','b','a'];
$payno= [1,2,3,4];
$res = [];
foreach($paytype as $k=>$v){
  $res[$v] = empty($res[$v]) ? $payno[$k] : $res[$v].','.$payno[$k];
}
print '<pre>';print_r($res);

输出:-

Array
(
    [a] => 1,2,4
    [b] => 3
)

如果你想输出

a-1,2,4 
b-3

然后在最后再加一个前臂。

foreach($res as $k=>$v){
  echo "$k-$v<br>";
}

只需使用此代码。

$paytype = array('a','a','b','a');
    $payno= array(1,2,3,4);
    $result = array();
    for($i=0;$i<count($paytype);$i++){
        $result[$paytype[$i]][] = $payno[$i];
    }
    $var = '';
    foreach($result as $k => $v)
    {
        $var .= "{$k} - ". implode(",", $v) . "<br />";
    }

    print_r($var);

结果:

a - 1,2,4
b - 3