Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 29.08.2016
Сообщений: 6
1

Объединить два массива в один с условием

02.04.2017, 13:32. Показов 1722. Ответов 3
Метки нет (Все метки)

Приветствую!
Подскажите как лучше реализовать объединение двух массивов в один, таким образом, чтобы в рандомное значение первого массива ($numArr) случайным порядком попали значения из второго массива ($urls)?

Я сделал такой код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$numArr = array_fill(0, 9000, '');
$c_numArr = count($numArr);
 
$urls = file('file.txt');
foreach($urls as $url)
{
 
    $rnd = mt_rand(0, $c_numArr - 1);
    if($numArr[$rnd] != '')
    {
        $numArr[$rnd] = $url;
    }
    else
    {
        while($numArr[$rnd] != '')
        {
            $rnd = mt_rand(0, $c_numArr - 1);               
        }
        $numArr[$rnd] = $url;
    }       
}
Есть что-то более лаконичное?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2017, 13:32
Ответы с готовыми решениями:

Объединить два массива в один
Есть два массива: ... $users1 = array("name" => "Иван", "age" => "20", "registered"...

Два исходных массива объединить в один, включив элементы второго массива между K и (K+1) элементами первого массива.
Ребят, помогите, пожалуйста, сделать задачи, так как сама в этом ничего не соображаю.. 1. Дан...

Объединить два массива в один
Помогите с переводом pascal кода в C++ program prog0523b; uses crt; var x, y: array of...

Объединить два массива в один
Имеется два строковых массива. Требуется их объединить в один, но чтобы между элементами ставилось...

3
Эксперт PHP
2983 / 2503 / 1180
Регистрация: 14.05.2014
Сообщений: 7,071
Записей в блоге: 1
02.04.2017, 13:59 2
Так?
PHP
1
2
3
4
$numArr = [];
$urls = file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$numArr = $urls;
shuffle($numArr);
0
0 / 0 / 0
Регистрация: 29.08.2016
Сообщений: 6
02.04.2017, 14:23  [ТС] 3
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Так?
PHP
1
2
3
4
$numArr = [];
$urls = file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$numArr = $urls;
shuffle($numArr);
В вашем коде количество элементов массива $numArr всегда будет равно количеству элементов массива $urls.

В моем коде выше зашито $numArr = array_fill(0, 9000, ''), т.е. массив $numArr длинее $urls.

На выходе должно в массиве $numArr быть так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array
(
    [0] => текст
    [1] => 
    [2] => текст
    [3] => 
    [4] => 
    [5] => текст
    [6] => текст
    [7] => 
    [8] => текст
    [9] => текст
    [10] => 
    ... 
)
0
Эксперт PHP
2983 / 2503 / 1180
Регистрация: 14.05.2014
Сообщений: 7,071
Записей в блоге: 1
02.04.2017, 16:15 4
Лучший ответ Сообщение было отмечено Deitolli как решение

Решение

Deitolli, может, так?
PHP
1
2
3
4
5
6
7
8
9
$numArr = array_fill(0, 9000, '');
$keys = array_keys($numArr);
$urls = file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach($urls as $url) {
    $key = array_rand($keys);
    $numArr[$key] = $url;
    unset($keys[$key]);
}
print_r($numArr);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2017, 16:15

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Объединить два массива в один
Даны одномерные массивы x = {4.1, 16, 0, -3.2, 12} и Y = {4, 5.1, 6}. Нужно объединить их в...

Объединить два массива в один
Помогите кто чем может, не получается объединить два массива в один, оч надо посмотрите кто может...

Объединить два упорядоченных массива в один
Заданы два упорядоченных массива А и В, состоящих из N и M вещественных элементов соответственно....

Как объединить два массива в один?
Вот к примеру есть два массива: int A={1,2,3,4}; int B={5,6,7,8}; Как создать третий массив С...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.