使用FOR循环比较和增加字符串值

时间:2017-01-16 22:50:04

标签: php laravel for-loop

我尝试将新字符串与数据库中的旧字符串进行比较,如果该字符串存在则将其增加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()循环,但是我的大脑已经阻塞并且过于复杂。

1 个答案:

答案 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;
}