一尘不染

递减字母值

php

我试图弄清楚如何将数组中的一组字母值向下移动一个步骤。例如,我的数组包含值(“ d”,“ e”,“ f”,“ g”,“ h”),而我想将其更改为(“
c”,“ d”,“ e”,“ f” “, “G”)。这是我正在使用的代码:

function move_up_left($x) {
    if($x['orientation'] == "down") {
        foreach($x[0] as &$value) {
            $value = --$value; 
        }
    } else {
        foreach($x[1] as &$value) {
            $value = --$value;
        }
    }

    return $x;
}

当我使用正值时,字母会改变;但是,负数似乎根本不起作用。


阅读 376

收藏
2020-05-29

共1个答案

一尘不染

PHP已超载++了字符串;并非如此--。你可以做同样的事情更清洁的代码chrord以及array_map

function decrementLetter($l) {
    return chr(ord($l) - 1);
}

function move_up_left($x) {
    if($x['orientation'] === 'down') $arr = &$x[0];
    else $arr = &$x[1];

    $arr = array_map('decrementLetter', $arr);

    return $x;
}

这是一个演示。请注意,您可能需要添加一种特殊情况来减少a-我不确定您要如何处理。

2020-05-29