2016-05-19 12 views

Antwort

1

du versuchen:

<?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); 
?> 

Ausgang:

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

Nur array_unique, array_map und array_keys wie folgt verwenden:

<?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]; 
} 

Ausgang:

a-1,2,4 
b-3 

Demo

0

Eine andere Alternative: -

Verwenden Sie einfach eine einfache foreach Schleife: -

$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); 

Ausgang: -

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

Wenn Sie Ausgabe

a-1,2,4 
b-3 

dann eine zusätzliche foreach am Ende hinzufügen möchten.

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

Verwenden Sie einfach diesen Code.

$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); 

Ergebnis:

a - 1,2,4 
b - 3