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

Maloi

Создатель
Регистрация
23 Май 2013
Сообщения
47
Реакции
5
Здравствуйте как создать многомерный массив удалив дубли из txt файла пример txt файла

/* ул|дом|кв */

Ленина|1|1а
Ленина|1|1
Ленина|1|2
Ленина|2|1
Ленина|2|2
Ленина|2|4
Ленина|2|10
Гоголя|10|1
Гоголя|10|2
Гоголя|10|3
Гоголя|10|4
Гоголя|10|5
Гоголя|42|1
Гоголя|42|2
Гоголя|42|3
Гоголя|42|4
Гоголя|42|5
Гоголя|42|6
Гоголя|42|7
Иванова|107|1
Иванова|107|1
Иванова|107|2
Иванова|107|3
Иванова|107|4
Иванова|107|5
Иванова|107|6
Иванова|107|7
Иванова|107|8
Иванова|107|10
 

Вложения

  • baza.txt
    576 байт · Просмотры: 2
Как то так ))
Код:
$data = file("baza.txt");

$streets = array();

foreach($data as $street)
{
    $street_parts = explode("|", trim($street));

    $streets[$street_parts[0]][$street_parts[1]][$street_parts[2]] = 1;

}

print_r($streets);
 
Скрытое содержимое доступно для зарегистрированных пользователей!

Код:
var origin = [
	      ['Ленина'], [1], ['1а'], 
              ['Ленина'], [1], ['1а'], 
              ['Ленина'], [1], ['1'], 
              ['Ленина'], [1], ['1'],
              ['Ленина'], [1], ['2'],
              ['Ленина'], [2], ['1']
             ];

function arrayEqual(a, b) {
    if (a.length !== b.length) { return false; }
    for (var i = 0; i < a.length; ++i) {
        if (a[i] !== b[i]) {
            return false;
        }
    }
    return true;
}

function contains(array, item) {
    for (var i = 0; i < array.length; ++i) {
        if (arrayEqual(array[i], item)) {
            return true;
        }
    }
    return false;
}

function normalize(array) {
    var result = [];
    for (var i = 0; i < array.length; ++i) {
        if (!contains(result, array[i])) {
            result.push(array[i]);
        }
    }
    return result;
}

var result = normalize(origin);
console.log(result);
alert (result);
 
Код:
var origin = [
          ['Ленина'], [1], ['1а'],
              ['Ленина'], [1], ['1а'],
              ['Ленина'], [1], ['1'],
              ['Ленина'], [1], ['1'],
              ['Ленина'], [1], ['2'],
              ['Ленина'], [2], ['1']
             ];

function arrayEqual(a, b) {
    if (a.length !== b.length) { return false; }
    for (var i = 0; i < a.length; ++i) {
        if (a[i] !== b[i]) {
            return false;
        }
    }
    return true;
}

function contains(array, item) {
    for (var i = 0; i < array.length; ++i) {
        if (arrayEqual(array[i], item)) {
            return true;
        }
    }
    return false;
}

function normalize(array) {
    var result = [];
    for (var i = 0; i < array.length; ++i) {
        if (!contains(result, array[i])) {
            result.push(array[i]);
        }
    }
    return result;
}

var result = normalize(origin);
console.log(result);
alert (result);

нужно получиться ул. Ленина дом 2 кв 2,3,4,5
<-------------- добавлено через 611 сек. -------------->
Как то так ))
Код:
$data = file("baza.txt");

$streets = array();

foreach($data as $street)
{
    $street_parts = explode("|", trim($street));

    $streets[$street_parts[0]][$street_parts[1]][$street_parts[2]] = 1;

}

print_r($streets);
Ваш пример почти подходить но ключи должны быть цифрами

т.е. 1 => ленина
 
нужно получиться ул. Ленина дом 2 кв 2,3,4,5
<-------------- добавлено через 611 сек. -------------->

Ваш пример почти подходить но ключи должны быть цифрами

т.е. 1 => ленина

в данном случае вам надо сделать еще один массив $street_names в него добавлять значение таким образом $street_names[] = $street_parts[0] + добавить проверку на существование улицы в этом массиве и получения ИД из него по названию улицы и все
 
Назад
Сверху