Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何循环数组并显示唯一键X和concat值Y_Php - Fatal编程技术网

Php 如何循环数组并显示唯一键X和concat值Y

Php 如何循环数组并显示唯一键X和concat值Y,php,Php,所以我需要循环一个数组,并在引用中显示唯一的键IdTransferFile和concat 通过上面的代码,我得到了以下结果: 差异 删除传输文件:1,参考:[46] 差异 删除传输文件:2,参考:[46] 差异 相同的 相同的 删除传输文件:3,参考:[464747] 排列 ( [0]=>阵列 ( [IdTransferFile]=>1 [参考]=>46 ) [1] =>阵列 ( [IdTransferFile]=>2 [参考]=>46 ) [2] =>阵列 ( [IdTransferFile

所以我需要循环一个数组,并在引用中显示唯一的键IdTransferFile和concat

通过上面的代码,我得到了以下结果:

差异 删除传输文件:1,参考:[46]

差异 删除传输文件:2,参考:[46]

差异 相同的 相同的 删除传输文件:3,参考:[464747]


排列
(
[0]=>阵列
(
[IdTransferFile]=>1
[参考]=>46
)
[1] =>阵列
(
[IdTransferFile]=>2
[参考]=>46
)
[2] =>阵列
(
[IdTransferFile]=>3
[参考]=>46
)
[3] =>阵列
(
[IdTransferFile]=>3
[参考]=>47
)
[4] =>阵列
(
[IdTransferFile]=>3
[参考]=>47
)
[5] =>阵列
(
[IdTransferFile]=>4
[参考]=>47
)
)
如果($item[“IdTransferFile”]==$pastTransferFile){
回显“相同”。
; 如果($item[“Reference”]!=$passreference){ $referenceText.=$item[“Reference”] } }否则{ 如果($pastTransferFile!=0){ echo(“删除传输文件:“.$pastTransferFile.”,引用:[“$pastReferenceText.”]”“


”; } $pastReferenceText=$transferFileText=“”; $transferFileText.=$item[“IdTransferFile”]; 回声“diff”。
; } $pastTransferFile=$item[“IdTransferFile”]; $pastReference=$item[“Reference”]; $pastReferenceText.=$pastReference;
我希望代表每次转让删除的参考:

删除传输文件:1,参考:[46]

删除传输文件:2,参考:[46]

删除传输文件:3,参考:[46,47]


谢谢

我第一次尝试回答关于SO的问题,所以这可能不是最聪明的方式,但我相当有信心它能完成任务

$items = array (
0 => array (
        'id' => 1,
        'ref' => 46
    ),
1 => array (
        'id' => 2,
        'ref' => 46
    ),
2 => array (
        'id' => 3,
        'ref' => 46
    ),
3 => array (
        'id' => 3,
        'ref' => 47
    ),
4 => array (
        'id' => 3,
        'ref' => 47
    ),
5 => array (
        'id' => 4,
        'ref' => 47
    )
);

// unique id array
$uIdArr = array();

// loop through items 
foreach($items as $item) {
    // pass ids to unique id array
    $uIdArr[] = $item['id'];
};

// trim unique id array (remove duplicates), and make the id the key
$uIdArr = array_unique($uIdArr);
$uIdArr = array_flip($uIdArr);
// create array to hold ref for each unique id 
$uIdArr = array_map(function() { return array(); }, $uIdArr);

// for each ref
foreach($items as $key => $item) {
    // pass ref to corrosponding id
    array_push($uIdArr[$item['id']], $item['ref']);
    // var_export($uIdArr[$item['id']]);
};

// loop through unique id array and output the desired outcome
foreach($uIdArr as $id => $ref) {
    // $refString = implode(", ",$ref);
    $refString = implode(", ",array_unique($ref));
    echo $output = "Delete transfer file : ".$id.", Reference : [".$refString."]\n";
};

// Output
// Delete transfer file : 1, Reference : [46]
// Delete transfer file : 2, Reference : [46]
// Delete transfer file : 3, Reference : [46,47]
// Delete transfer file : 4, Reference : [47]

// var_export($uIdArr);

我很高兴有任何改进建议,谢谢。

谢谢你的帮助,但我找到了方法。 都在同一个地方

再次感谢,晚安

foreach($marks as $k => $item) {

//deletes

if ($pastTransferFile == 0) {
 $pastReference = $item["Reference"];
 $pastTransferFile = $item["IdTransferFile"];    
} else {    
if ($item["IdTransferFile"] == $pastTransferFile) {

if ($item["Reference"] != $pastReferenceValue) {
 $pastReference .= $item["Reference"] . ", ";
 $pastReferenceValue = $item["Reference"];
}
$pastTransferFile = $item["IdTransferFile"];    
} else {

$text = "Delete transfer file : ".$pastTransferFile.", Reference : [".  $pastReference."]";    

echo (str_replace(", ]","]",$text));

$pastTransferFile = $item["IdTransferFile"];
$pastReference = $item["Reference"].", ";    
$pastReferenceValue = $item["Reference"];   
}

}

}

谢谢,但是我找到了方法,但是是的,很好的选择