![](/img/trans.png)
[英]Substitute column value in each row of a 2d array based on other rows in the same array
[英]Update column value in each row where the row is identical to another row in the same 2d array
我有一個多維數組,如下所示:
$arr = [
['name' => 'John', 'age' => 10, 'gender' => 'male', 'info' => ''],
['name' => 'Jeniffer', 'age' => 12, 'gender' => 'female', 'info' => ''],
['name' => 'John', 'age' => 10, 'gender' => 'male', 'info' => '']
];
我想檢測它包含的 arrays 之一是否重復。 如果它是一個重復的數組,我想要 append 信息索引與“重復”。
例如,將邏輯應用於原始多維數組時,最終結果(輸出)如下所示:
$arr = [
['name' => 'John', 'age' => 10, 'gender' => 'male', 'info' => 'DUPLICATED'],
['name' => 'Jeniffer', 'age' => 12, 'gender' => 'female', 'info' => ''],
['name' => 'John', 'age' => 10, 'gender' => 'male', 'info' => 'DUPLICATED']
];
我怎樣才能做到這一點?
我嘗試使用以下代碼:
$uploadData = array_unique($uploadData->toArray(), SORT_REGULAR);
…但它只產生一個唯一的數組(即,它消除了所有重復項)。 這不是我想要的。 我只想對重復項進行注釋,表明它們是重復項。
info
元素(但不要更新值)。DUPLICATED
更新當前行和引用變量。代碼:(演示)
foreach ($arr as &$row) {
$compositeKey = implode('_', $row);
if (isset($info[$compositeKey])) { // not first occurrence
$info[$compositeKey] = 'DUPLICATED'; // overwrite reference value
$row['info'] = 'DUPLICATED'; // update current row's value
} else {
$info[$compositeKey] = &$row['info']; // first occurrence, assign reference
}
}
var_export($arr);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.