我尝试将新字符串与数据库中的旧字符串进行比较,如果该字符串存在则将其增加1,例如,如果字符串 car 存在,则新字符串应为 car -1 如果该字符串存在则 car-2 ...
我使用Laravel,并通过使用 while()循环实现了这一点,但我也想用 for()循环来实现。
这是我的代码:
foreach($lang_codes as $key => $value)
{
$oldAlias = str_slug($request->{"new_category_lang_{$value->code}"}, '-');
$newAlias = $oldAlias;
$aliasCheck = ShopCategoryName::where('alias', $oldAlias)->first();
$newCategory = new ShopCategoryName;
$i = 1;
while ($aliasCheck)
{
$newAlias = $oldAlias . '-' . $i;
$aliasCheck = ShopCategoryName::where('alias', $newAlias)->first();
$i++;
}
}
我试图将 strcmp()与 for()循环一起使用,但我不知道如何将这些代码放在一起,这很糟糕。
所以基本上,我尝试使用上面的代码来处理 for()循环,但是我的大脑已经阻塞并且过于复杂。
答案 0 :(得分:0)
这部分
$i = 1;
while ($aliasCheck)
{
$newAlias = $oldAlias . '-' . $i;
$aliasCheck = ShopCategoryName::where('alias', $newAlias)->first();
$i++;
}
相当于
for ($i = 1; $aliasCheck; $i++)
{
$newAlias = $oldAlias . '-' . $i;
$aliasCheck = ShopCategoryName::where('alias', $newAlias)->first();
}
您还可以将代码重写为:
$oldAlias = str_slug($request->{"new_category_lang_{$value->code}"}, '-');
$newAlias = $oldAlias;
$newCategory = new ShopCategoryName; // <-- not sure what that is good for
for ($i = 1; ShopCategoryName::where('alias', $newAlias)->exists(); ++$i)
{
$newAlias = $oldAlias . '-' . $i;
}