将数组元素上移一个位置


Move array element up one place PHP

我需要帮助弄清楚如何使用PHP移动数组项。目前的PHP代码如下:

<?php
$task_list = array();
$task_list[] = 'Write chapter';
$task_list[] = 'Edit chapter';
$task_list[] = 'Proofread chapter';
switch( $_POST['action'] ) {
   case 'Promote Task':
//This is where I'm stuck.
?>

和HTML:

<?php if (count($task_list) > 0 && empty($task_to_modify)) : ?>
<h2>Select Task:</h2>
<form action="." method="post" >
    <?php foreach( $task_list as $task ) : ?>
      <input type="hidden" name="tasklist[]" value="<?php echo $task; ?>"/>
    <?php endforeach; ?>
    <label>Task:</label>
    <select name="taskid">
        <?php foreach( $task_list as $id => $task ) : ?>
            <option value="<?php echo $id; ?>">
                <?php echo $task; ?>
            </option>
        <?php endforeach; ?>
    </select>
    <br />
    <label>&nbsp;</label>
    <input type="submit" name="action" value="Modify Task"/>
    <input type="submit" name="action" value="Promote Task"/>
    <input type="submit" name="action" value="Delete Task"/>

任何帮助将非常感激!

您只需要交换两行(选中的任务和上面的任务)。如果你的索引总是0,1,2,3,…n:

$selectedRow = $_POST['taskid'];
if ($selectedRow === 0) {
    echo 'Already top-priority';
} else {
    $rowAbove = $taks_list[$selectedRow - 1];
    $task_list[$selectedRow - 1] = $taks_list[$selectedRow];
    $task_list[$selectedRow] = $rowAbove;
    // Or without help-variable, but less readable
    list($task_list[$selectedRow - 1], $task_list[$selectedRow])
        = array($task_list[$selectedRow], $task_list[$selectedRow - 1]);
}