数组的值向前或向后移动一位

<?php

function array_swap_forward($arr,$elem)
{
	$ndx = array_search($elem,$arr) - 1;
	$b4 = array_slice($arr,0,$ndx);
	$mid = array_reverse(array_slice($arr,$ndx,2));
	$after = array_slice($arr,$ndx + 2);

	return array_merge($b4,$mid,$after);
}

function array_swap_back($arr,$elem)
{
	$ndx = array_search($elem,$arr);
	$b4 = array_slice($arr,0,$ndx);
	$mid = array_reverse(array_slice($arr,$ndx,2));
	$after = array_slice($arr,$ndx + 2);

	return array_merge($b4,$mid,$after);
}

$arr =array('a','b','c','d','e','f');
print_r(array_swap_forward($arr,'c'));//将C元素向前移动一位
echo '<br>';
print_r(array_swap_back($arr,'c'));//将C元素向后移动一位
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一份 MASM 汇编代码,可以将一个已知数组向右移动一位: ``` ; 定义数组 data segment array db 1, 2, 3, 4, 5 data ends ; 代码段 code segment assume cs:code, ds:data start: mov ax, data mov ds, ax ; 数组长度 mov cx, 5 ; 将数组最后一位保存 mov al, array[cx-1] ; 从后向前遍历数组 mov si, cx-2 mov di, cx-1 loop1: ; 将当前位的移到下一位 mov bl, array[si] mov array[di], bl ; 继续向前遍历 dec si dec di cmp si, -1 jge loop1 ; 将保存的最后一位给第一位 mov array[0], al ; 输出移动后的数组 mov cx, 5 mov si, 0 loop2: mov dl, array[si] mov ah, 02h add dl, 30h int 21h inc si cmp si, cx jl loop2 ; 程序结束 mov ax, 4c00h int 21h code ends end start ``` 这段代码中,我们首先定义了一个包含五个元素的数组 `array`。然后,在程序开始处,我们使用 `mov` 指令将 `DS` 寄存器设置为数据段的地址,这样程序就可以访问我们定义的数组。 接着,我们使用 `mov` 指令将数组最后一位保存在 `AL` 寄存器中。然后,我们使用 `mov` 指令将 `SI` 和 `DI` 寄存器设置为数组倒数第二个元素和最后一个元素的地址,然后使用 `loop` 指令从后向前遍历数组,将每个元素的移到下一个元素中。 最后,我们使用 `mov` 指令将保存的最后一位数组的第一位,然后输出移动后的数组。最后,我们使用 `mov` 指令将 `AX` 寄存器设置为 `4C00H`,然后使用 `int 21h` 指令结束程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值