Существует много разных способов решения такой задачи, как показано ниже: очень базовое введение в тему. Если это полезно, отлично, в противном случае я надеюсь, что это хотя бы даст представление о том, куда вы можете пойти (или нет!).
Этот простой пример принимает хеш имени файла (в данном случае MD5 только потому, что вы, вероятно, знакомы с ним). sscanf
просто получает первый символ хэша и превращает его в число от 0 до 15 (поскольку md5 () возвращает шестнадцатеричное число). Поскольку мы хотим распределить только между четырьмя массивами, оператор модуля (%
) используется так, что $num
всегда будет приводить к 0, 1, 2 или 3, который затем используется в качестве ключа массива (см. Ваш $ array1, $ массив2 и т. д.).
$files = array('a.html','b.html','c.html','d.html');
$arrays = 4;
$array = array_fill(0, $arrays, array());
// For each file name put it into the appropriate slot in $array
foreach ($files as $filename) {
sscanf(md5($filename), '%1x', $hex);
$key = $hex % $arrays;
$array[$key][] = $filename;
}
// See what happened
var_dump($array);
Для этого конкретного примера результирующий массив (который вы можете вставить в отдельные переменные, если хотите) имеет следующую структуру:
$array = array(
0 => array()
1 => array('c.html')
2 => array('d.html')
3 => array('a.html', 'b.html')
);