为了账号安全,请及时绑定邮箱和手机立即绑定

转换为数组后,删除字符串上的元素不起作用

转换为数组后,删除字符串上的元素不起作用

PHP
慕码人2483693 2023-07-08 15:44:24
下面的代码解释了如何使用 unset 函数删除元素,我使用了一个字符串并将该字符串转换为数组,现在尝试删除第一个和最后一个元素。但元素不会被删除。帮助将不胜感激<?php$string="Cupid";  //orginal string$stringmod= str_split($string);  //converted the string to an array$length= count($stringmod); //length of the stringfor($i=0; $i<$length; $i++) {    if($i == 0 || $i == $length-1) //condition to be executed    {                unset($stringmod[$i]); //delete elements        }    }print_r($stringmod);?>
查看完整描述

2 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

关于您的代码,您在循环中的length之前缺少$ 。


尽管如此:不需要循环遍历数组 - 您可以直接寻址元素。以下将起作用:


<?php

   $string="Cupid";

   $stringmod= str_split($string);

   unset($stringmod[count($stringmod)-1]);

   unset($stringmod[0]);

   print_r($stringmod);

?>

函数 array_pop 和 array_shift 将执行相同的操作(从数组中删除最后一个/第一个元素)。如果您想稍后在代码中再次执行此操作,它们会更好(PHP 使用关联数组,因此 $stringmod[0] 仅在开头才是第一个元素 - 当您删除它时,不再有 $stringmod[0 ],因此执行 unset($stringmod[0]) 两次不会删除两个“第一个”元素,而只会删除一个)。所以在这种情况下最好的答案可能是:


<?php

   $string="Cupid";

   $stringmod= str_split($string);

   array_pop($stringmod);

   array_shift($stringmod);

   print_r($stringmod);

?>

PS根据安德鲁在我的答案下面的评论,您还可以使用 array_values() 函数重新排序或使用 array_splice() 删除元素(这也会重新排序)。就我个人而言,我不喜欢使用它们,因为它们占用资源,并且在可能的情况下,我不依赖于数组具有幻数的排序索引:)


查看完整回答
反对 回复 2023-07-08
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

array_shift将从数组中删除第一个元素,重新索引数字键。


array_pop将删除最后一个。


$string="Cupid";  //orginal string

$stringmod= str_split($string); 


array_shift($stringmod);

array_pop($stringmod);


print_r($stringmod);

如果您想通过循环来完成此操作,按照@jibsteroos comment,您几乎已经完成了,您只需要在循环中正确引用测试计数器即可for。


查看完整回答
反对 回复 2023-07-08
  • 2 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信