如何修改数组以获得另一个数组

How to modify an array to get another array

我有一个手动填充的数组,其中包含用于 运行 图像修改功能的目录名称。这些目录的数量和名称经常变化,所以为了简化它,我扫描主目录以获取子目录的名称。问题是这个目录数组的格式不符合我的需要

这是手动填充的数组:

$aManipulations = array(
    array('x109_110x110'),
    array('x1380'),
    array('x1800'),
    array('x2012'),
    array('x387'),
    array('x40'),
    array('x561'),
    array('x60'),
    array('x640'),
    array('x669'),
    array('x671'),
    array('x700'),
);

结果:

Array
(
    [0] => Array
        (
            [0] => x109_110x110
        )

    [1] => Array
        (
            [0] => x1380
        )

    [2] => Array
        (
            [0] => x1800
        )

    [3] => Array
        (
            [0] => x2012
        )

    [4] => Array
        (
            [0] => x387
        )

    [5] => Array
        (
            [0] => x40
        )

    [6] => Array
        (
            [0] => x561
        )

    [7] => Array
        (
            [0] => x60
        )

    [8] => Array
        (
            [0] => x640
        )

    [9] => Array
        (
            [0] => x669
        )

    [10] => Array
        (
            [0] => x671
        )

    [11] => Array
        (
            [0] => x700
        )

)

扫描目录生成的其他数组:

$dir = glob('images/onthefly/products/' . '*', GLOB_ONLYDIR);
$dir = str_replace("images/onthefly/products/", "", $dir);
$aManipulations = array(
    array($dir),
);

结果:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => x109_110x110
                    [1] => x1380
                    [2] => x1800
                    [3] => x2012
                    [4] => x387
                    [5] => x40
                    [6] => x561
                    [7] => x60
                    [8] => x640
                    [9] => x669
                    [10] => x671
                    [11] => x700
                )

        )

)

那么转换自动填充的数组需要做些什么呢?

######################更新######################

foreach ($aManipulations as $aManipulation) {
    smarty_modifier_manipulateImage(
            DIR_WS_ORIGINAL_IMAGES . $aQuery['products_image'],
            $aManipulation[0],
            isset($aManipulation[1]) ? $aManipulation[1] : '',
            isset($aManipulation[2]) ? $aManipulation[2] : false
    );
}

据我了解,您需要将 scan dir 生成的数组作为手动填充的数组进行操作。

如您所见,$dir 是一个数组,因此您可以遍历它以访问各个目录和子目录名称。您只需创建一个具有该名称的数组。

您可以使用 for 循环来完成。

$requiredArray = array();
foreach ($dir as $name) {
array_push($requiredArray, array($name));
}
print_r($requiredArray);

或使用array_map:

$dir = array('x109_110x110','x1380','x1800','x2012','x387','x40','x561','x60','x640','x669','x671','x700');
$func = function(String $value): Array {
    return array($value);
};

print_r(array_map($func, $dir));

如果一定要把glob()生成的数组转换成你之前用过的数组结构

foreach( $dir as $d ) {
    $aManipulations[][] = $d;
}

会为你做的