@topmet

Как сгенерировать массив из списка?

Есть список городов
Челябинск
Магнитогорск
Миасс
Златоуст
Снежинск
Троицк
Карабаш
Еманжелинск
Аша
Локомотивный
....


каким циклом пройтись, чтобы получился массив не повторяемых пар городов.

пс. Для сервиса расстояний
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
@topmet Автор вопроса
решение
foreach($A['cities'] as $v1){
	foreach($A['cities'] as $v2){
		if($v1==$v2) continue;
		$s1 = $v1.''.$v2;
		$s2 = $v2.''.$v1;
		if(in_array($s1, $A['index'] ) || in_array($s2, $A['index'] )) continue;
		$A['pairs'][] = array($v1,$v2);
		$A['index'][] = $s1;
		$A['index'][] = $s2;
	}
	
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@karminski
Senior React.JS Developer
1. Разбейте текст на строки (preg_split)
2. Удалите неуникальные значения (array_unique)
Ответ написан
@mstdoc
Тупо в лоб...

<?php

$array = array('Челябинск','Магнитогорск', 'Миасс','Златоуст');
	
$result_array = array();
$tmp_pairs = array();
	
foreach( $array as $row => $town_in_row )
{
	foreach( $array as $column => $town_in_column )
	{
		if( $column == $row )
			continue;
			
		$pairs_key1 = $row.'_'. $column;
		$pairs_key2 = $column .'_'. $row;
		
		if( isset($pairs[$pairs_key1]) or isset($pairs[$pairs_key2]) )
		    continue;
		
		$result_array[] = $town_in_row .'-'.$town_in_column;
		$pairs[$pairs_key1] = true;
	}
}

print_r($result_array);
Ответ написан
Комментировать
@Vahmur
Network Administrator, Web Developer
$stringCities = "Тут ваши города";
$arrayCities = explode("\n", $stringCities);
$arrayCities = array_unique($arrayCities);

И по-хорошему еще что-то типа...
foreach($arrayCities as &$city) {
    $city = trim($city);
}

Потому как я не знаю переносится ли ваша строка \n или \r\n.
Код не тестировал.. 8)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы