修改数组中的最后一个元素

Joh*_*per 14 php arrays

如何修改数组中的最后一个元素?

该数组如下所示:

$fields = array("firstName = 'Bob', ",
                "lastName = 'Smith', ",
                "email = 'bob@example.com', ",
                "address = '123 anystreet', ");
Run Code Online (Sandbox Code Playgroud)

该数组由脚本生成,该脚本创建值并在每个字符串的末尾添加逗号/空格.我想从该数组中的最后一个元素中删除该逗号/空格.请记住,值实际上可以包含逗号/空格组合,因此只需要删除最后一个元素和最后一个元素的最后两个字符.

我看过这个end()函数,但我不认为这会有所帮助,因为它只是获得了价值.

编辑确定所以我创建了这个函数/数组,以便我只有一个mysql函数来更新用户.类似于检测更改功能,它只传回所需/更改的字段.我没有意识到这种方法存在问题.我认为,因为我已经在我的旧函数中编写了mysql查询,所以不应该有这样的问题.公众无法访问其所在的文件.我将使用对我有用的最佳答案,但我将搜索为什么这有问题,我希望评论/链接这个方法有什么问题.谢谢.

Dav*_*ris 29

像这样!

end($array);
$key = key($array);
reset($array);
Run Code Online (Sandbox Code Playgroud)

  • 如果数组是普通的数字,那么Chris的答案是一个更好的IMO.如果数组是关联数组,则只有这个数组才有效. (3认同)
  • 这取决于您要修改的内容-键或值。使用$ array [$ key]`修改值,而只需$ key修改键(但是您已经知道了) (2认同)

Chr*_*tmo 10

有一种简便的方法可以做到这一点,但如果它被分成几部分则更容易理解:

$index = count( $fields ) - 1;
$value = $fields[$index];
$fields[$index] = preg_replace( "/,\ $/", "", $value );
Run Code Online (Sandbox Code Playgroud)

  • 尼斯.如果你只使用`rtrim($ value,',');`而不是正则表达式,那会更好. (2认同)
  • @Jan Dvorak或OP可以生成一个数组并用`,`内爆,整个问题就会消失. (2认同)

arc*_*ine 6

要更改最后一个数字元素的值:

$lastValue = array_pop($fields);
$fields[] = rtrim(', ',$lastValue);
Run Code Online (Sandbox Code Playgroud)

如果您正在为查询准备这些值,我建议将没有逗号的所有内容存储在数组中,然后在需要时在该数组上调用 implode 以防止尾随逗号问题


Dan*_*non 5

数组弹出和推送是对基本数组执行此操作的最简单方法。(我知道这在技术上不是问题,但很多人也会来这里寻找与简单数组相关的答案)。

<?php

function update_last(&$array, $value){
    array_pop($array);
    array_push($array, $value);     
}

?>
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用这个函数:

<?php

$array = [1,2,3];

update_last($array, 4); //$array = [1,2,4];

?>
Run Code Online (Sandbox Code Playgroud)