3 回答

TA貢獻1786條經(jīng)驗 獲得超11個贊
您可以執(zhí)行 array_unique (保留鍵),然后用0
.?按鍵排序就完成了:)
+
在數(shù)組上將是unify
數(shù)組,但優(yōu)先考慮左側的數(shù)組。
代碼
$input = "0-1-1-3-1-1-3-5-0";
$array = explode('-', $input);
$result = array_unique($array) + array_fill(0, count($array), 0);
ksort($result);
var_dump(implode('-',$result));
代碼(v2 - 由 micmackusa 建議) - 更短且更易于理解
填充輸入數(shù)組大小的數(shù)組。并替換為 中的剩余值array_unique。不需要ksort。0s 將被替換為 的保留鍵array_unique。
$input = "0-1-1-3-1-1-3-5-0";
$array = explode('-', $input);
$result = array_replace(array_fill(0, count($array), 0), array_unique($array));
var_export($result);

TA貢獻1818條經(jīng)驗 獲得超11個贊
這是另一種方法。
$id = "202883-202882-202882-0-234567-2-2-45435";
從字符串中,您根據(jù)分隔符將字符串分解為數(shù)組,在本例中為“-”/
$id_array = explode('-', $id);
然后我們可以循環(huán)遍歷該數(shù)組,對于找到的每個唯一條目,我們可以將其存儲在另一個數(shù)組中。因此,當我們搜索數(shù)組時,我們正在構建一個數(shù)組。
$id_array_temp = [];
// Loop through the array
foreach ($id_array as $value) {
if ( in_array($value, $id_array_temp)) {
// If the entry exists, replace it with a 0
$id_array_temp[] = 0;
} else {
// If the entry does not exist, save the value so we can inspect it on the next loop.
$id_array_temp[] = $value;
}
}
在此操作結束時,我們將得到一個唯一值數(shù)組,其中任何重復項都將替換為 0。
要重新創(chuàng)建字符串,我們可以使用 implode...
$str = implode('-', $id_array_temp);
echo $str;
重構這個,使用三元來代替 If,else...
$id_array = explode('-', $id);
$id_array_temp = [];
foreach ($id_array as $value) {
$id_array_temp[] = in_array($value, $id_array_temp) ? 0 : $value;
}
$str = implode('-', $id_array_temp);
echo $str;
輸出是
202883-202882-0-0-234567-2-0-45435

TA貢獻1776條經(jīng)驗 獲得超12個贊
這似乎是一個經(jīng)典的XY 問題。
基本行動只需:
用連字符分隔字符串中的子字符串。
驗證每個子字符串中的字符格式正確并且對于該集合是唯一的。
僅對合格值采取有意義的行動。
您會看到,當您只真正需要驗證輸入數(shù)據(jù)時,替換/清理任何內容都沒有任何好處。在輸入中添加零只會在以后產(chǎn)生更多工作。
簡而言之,您應該使用類似于此流程的直接方法:
if (!empty($_GET['id'])) {
? ? $ids = array_unique(explode('-', $_GET['id']));
? ? foreach ($ids as $id) {
? ? ? ? if (ctype_digit($id) && strlen($id) === 6) {
? ? ? ? // or: if (preg_match('~^\d{6}$~', $id)) {
? ? ? ? ? ? takeYourNecessaryAction($id);
? ? ? ? }
? ? }
}
- 3 回答
- 0 關注
- 151 瀏覽
添加回答
舉報