#php #arrays #wordpress #array-merge
Вопрос:
Я создал функцию для генерации случайных чисел, которая принимает начальное число, конечное число, количество генерируемых чисел, а также возможность исключить массив чисел. Это выглядит так:
function random_numbers($min, $max, $quantity, $exclude) {
$numbers = range($min, $max);
$left = array_diff($numbers, $exclude);
shuffle($left);
$remain = array_slice($left, 0, $quantity);
return $remain;
}
Массив исключений выглядит следующим образом:
Array ( [0] => 217 [1] => 321 [2] => 1591 [3] => 1069 [4] => 1532 )
Затем я хочу объединить вновь сгенерированные числа с массивом исключений и сохранить их в WordPress post_meta, поэтому я сделал следующее:
$exclude = get_post_meta($product_id, '_numbers_sold', false);
$numbers = random_numbers('1', $max_tickets, $qty, $exclude);
foreach($numbers as $number){
$exclude [] = $number;
}
update_post_meta($product_id, '_numbers_sold', $sold_numbers);
Функция работает, но добавление нового числа в массив создает отдельные массивы. Я тоже пробовал array_merge
, но получаю те же результаты.
Результат выглядит следующим образом:
Array
(
[0] => Array
(
[0] => 217
[1] => 321
[2] => 1591
[3] => 1069
[4] => 1532
)
[1] => 597
[2] => 1853
[3] => 582
[4] => 1887
[5] => 1484
)
Почему это должно было произойти? Он разделяет два массива. Это потому, что ключи массива уже существуют?
Комментарии:
1. Что вы пытались сделать до сих пор, чтобы решить эту проблему? Это так мало кода, что даже vardump мог бы помочь, а если нет, вы также можете запустить XDebug
2. Пожалуйста, укажите var_dump и опубликуйте оба
$exclude
,$numbers
прежде чем пытаться объединить их.