加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 数组中的ucwords值

发布时间:2020-12-13 22:03:02 所属栏目:PHP教程 来源:网络整理
导读:在我的$_POST中,我想知道如何在数组中的值“english”和“math”上应用ucwords. Array ( [name1] = Array ( [0] = english [1] = 2 ) [name2] = Array ( [0] = math [1] = 1 ) [submit] = Add to List ) 我仍然在操纵阵列时感到困惑,所以我尝试了这个,但没有
在我的$_POST中,我想知道如何在数组中的值“english”和“math”上应用ucwords.

Array
    (
        [name1] => Array
            (
                [0] => english
                [1] => 2
            )

        [name2] => Array
            (
                [0] => math
                [1] => 1
            )

        [submit] => Add to List
    )

我仍然在操纵阵列时感到困惑,所以我尝试了这个,但没有运气.

foreach($_POST as $key => $value)
{
  if(is_array($value))
    {
      foreach($value as $key2 => $value2)
      {
        $value2 = ucwords($value2);
      }
    }
}

解决方法

通过更改这些值(与任何其他变量一样).因为它是一个数组,这基本上是这样的(在你的例子中为“英语”):

$_POST['name1'][0] = ucwords($_POST['name1'][0]);

您正在使用foreach循环来迭代每个值,这基本上类似于以下(再次简化)示例(在您的情况下不起作用,只是为了使其更加明显):

$value2 = $_POST['name1'][0];
$value2 = ucwords($value2);

如此示例所示,您将更改$value2的值,但不会更改$_POST中的相应条目.您可以在PHP中使用引用或别名来实现此目的:

$value2 = &$_POST['name1'][0];
$value2 = ucwords($value2);

这也将改变$_POST [‘name1’] [0],因为它已经是aliased Docs作为$value2,现在是对它的引用.

foreachDocs也支持引用:

foreach($_POST['name1'] as &$value2)
{
    $value2 = ucwords($value2);
}
unset($value2); # remove the alias for safety reasons.

见&在$value2前面的foreach标题内部签名.这使$value2成为迭代数组时每个数组条目的别名.

当你在彼此内部迭代两个数组时,你需要应用这两次,这是完整的例子:

foreach ($_POST as $key => &$value)
{
    if (is_array($value))
    {
        foreach ($value as $key2 => &$value2)
        {
            $value2 = ucwords($value2);
        }
        unset($value2); # remove alias for safety reasons.
    }
}
unset($value); # remove alias for safety reasons.

当然,可以在此处防止别名并使用键直接访问这些值:

foreach ($_POST as $keyOuter => $valueOuter)
{
    if (is_array($valueOuter))
    {
        foreach ($valueOuter as $keyInner => $valueInner)
        {
            $_POST[$keyOuter][$keyInner] = ucwords($valueInner);
        }
    }
}

哪个可能更易读,更容易理解它是如何工作的,因为它不使用任何别名/引用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读