【问题标题】:For loop concatenationFor 循环连接
【发布时间】:2018-04-25 17:22:14
【问题描述】:

所以我有一段代码,它获取数组的第一个单词并将其包装在一个跨度中,但我需要对 2 个不同的标题执行此操作。

我不想复制看起来很糟糕的相同代码块,我想使用 for 循环,如何将 $i 与变量名或 'tytul1' 连接起来?

for ($i = 1; $i <= 2; $i++) {
    $calloutTitleExplode1 = explode(' ',trim($callout['tytul1']));
    $calloutTitleSpan1 = '<span>'.$calloutTitleExplode1[0].'</span> ';
    $calloutTitleShifted1 = array_shift($calloutTitleExplode1);
    $calloutTitleRest1 = implode(" ", $calloutTitleExplode1);
    $callout['tytul1'] = $calloutTitleSpan1 . $calloutTitleRest1;

    $calloutTitleExplode2 = explode(' ',trim($callout['tytul2']));
    $calloutTitleSpan2 = '<span>'.$calloutTitleExplode2[0].'</span> ';
    $calloutTitleShifted2 = array_shift($calloutTitleExplode2);
    $calloutTitleRest2 = implode(" ", $calloutTitleExplode2);
    $callout['tytul2'] = $calloutTitleSpan2 . $calloutTitleRest2;
}

【问题讨论】:

  • 不要与变量名连接,这很愚蠢。但是对于访问的数组,$callout['tytul'.$i] 像任何其他字符串一样连接。
  • 使用${"your_var_name_without_the_number$i"} 作为变量

标签: php for-loop concatenation


【解决方案1】:

你可以这样做

for ($i = 1; $i <= 2; $i++) {
    ${"calloutTitleExplode$i"} = explode(' ',trim($callout["tytul$i"]));
    ${"calloutTitleSpan$i"} = '<span>'.${"calloutTitleExplode$i"}[0].'</span> ';
    ${"calloutTitleShifted$i"} = array_shift(${"calloutTitleExplode$i"});
    ${"calloutTitleRest$i"} = implode(" ", ${"calloutTitleExplode$i"});
    $callout["tytul$i"] = ${"calloutTitleSpan$i"} . ${"calloutTitleRest$i"};
}

这将使用$i动态创建变量名称

【讨论】:

    猜你喜欢
    • 2019-08-12
    • 1970-01-01
    • 2019-04-14
    • 2019-01-05
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多