Php 如何在数组中添加一行值并移动到上一个键
我希望将以下示例中具有o的值添加到数组中具有o值的第一个键之前的键。像这样:Php 如何在数组中添加一行值并移动到上一个键,php,arrays,Php,Arrays,我希望将以下示例中具有o的值添加到数组中具有o值的第一个键之前的键。像这样: $arr = array( 0 => 'apple', 1 => 'pear', 2 => 'orange', 3 => 'octopus', 4 => 'pineapple' ) $arr = array( 0 => 'apple', 1 => 'pearorangeoctopus', 2 => 'Pineapple' ) 但是,具有o的行的数量可以是可变的,并且
$arr = array(
0 => 'apple',
1 => 'pear',
2 => 'orange',
3 => 'octopus',
4 => 'pineapple'
)
$arr = array(
0 => 'apple',
1 => 'pearorangeoctopus',
2 => 'Pineapple'
)
但是,具有o的行的数量可以是可变的,并且可以在其中多次出现
$arr = array(
0 => 'apple',
1 => 'pear',
2 => 'orange',
3 => 'octopus',
4 => 'pineapple',
5 => 'blueberry',
6 => 'pumpkin',
7 => 'chocolate',
8 => 'icecream'
)
$arr = array(
0 => 'apple',
1 => 'pearorangeoctopus',
2 => 'pineapple',
3 => 'blueberry',
4 => 'pumpkinchocolate',
5 => 'icecream'
)
有人有主意吗?:) 试试这样的方法:
$arr = array(...);
$new_arr = array();
$o_index = false;
foreach($arr as $key=>$item){
if($item[0]=='o'){
if(!$o_index)
$o_index = $key-1;
$new_arr[$o_index] .= $item
}else{
$new_arr[$key] = $item;
}
}
请记住,如果您的键不是连续的数字,或者第一个键以“o”开头,则会出现问题
$result = array();
$currentIndex = 0;
$item = $arr[$currentIndex];
while ($currentIndex < count($arr)) {
$nextItem = $arr[$currentIndex+1];
if (strpos($nextItem, 'o') !== false) {
$item .= $nextItem;
}
else {
$result[] = $item;
$item = $arr[$currentIndex+1];
}
$currentIndex++;
}
顺便说一句:删除通知(未定义的偏移量)所需的代码留作练习。注意拼写。。。array()不是aray..如果第一个值中有一个o怎么办?为什么在第二个示例中,
chocolate
被连接起来?这不计算(您的第二个示例与第一个示例相矛盾)。你没有犯错误吗?否则,你的“问题”中没有逻辑,所以不可能解决它。哎呀。。对不起,你是对的,array()是的,我在第二个示例中也犯了一个错误。它应该是:$arr=array(0=>‘苹果’、1=>‘梨’、2=>‘橙’、3=>‘章鱼’、4=>‘菠萝’、5=>‘蓝莓’、6=>‘南瓜’、7=>‘巧克力’、8=>‘冰淇淋’)变成:$arr=aray(0=>‘苹果’、1=>‘梨橙章鱼’、2=>‘菠萝’、3=>‘蓝莓’、4=>‘南瓜饼’、5=>‘冰淇淋’)
array(6) {
[0]=> "apple"
[1]=> "pearorangeoctopus"
[2]=> "pineapple"
[3]=> "blueberry"
[4]=> "pumpkinchocolate"
[5]=> "icecream"
}