如何修改数组以获得另一个数组
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;
}
会为你做的
我有一个手动填充的数组,其中包含用于 运行 图像修改功能的目录名称。这些目录的数量和名称经常变化,所以为了简化它,我扫描主目录以获取子目录的名称。问题是这个目录数组的格式不符合我的需要
这是手动填充的数组:
$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;
}
会为你做的