Здравствуйте. У меня возникла проблема при работе с ассоциативным массивом. Я хочу вывести название ключей, но скрипт, который я написал выводит лишь порядковый номер ключей. Я не знаю, как мне получить название ключей в ассоциативном массиве. Вот код: <?php $mas = array(); $f = file('online.txt'); /* Тут люди */ foreach($f as $line) { $nickname = trim(substr($line, 18)); $mas[] = [$nickname => '0']; /* Заполняю массив */ }; $keys = array_keys($mas); foreach ($keys as $key) { print_r($mas[$key]); /* Выводит всё правильно: Array ( [Ufo1] => 0 ) Array ( [Ufo2] => 0 ) Array ( [Ufo3] => 0 ) */ }; /* А этот кусочек кода выводит почему-то порядковый номер ключей вместо названий ключей. */ $keys = array_keys($mas); foreach ($keys as $key) { echo($key.' '); /* Выводит: 0 1 2 3 4 */ }; ?> Если не трудно, подскажите, где я ошибся.
Ваш "кусочек кода" выводит, как ему и положено, ключи массива массивов, который вы создали первым циклом: Код (Text): [ 0 => ['Ufo1' => '0'], 1 => ['Ufo2' => '0'], 2 => ['Ufo3' => '0'], 3 => ['Ufo4' => '0'], 4 => ['Ufo5' => '0'], ]; Чтобы работало так, как вам хочется, нужно создавать НЕвложенный массив. Примерно так: PHP: <?php $mas = []; $f = file('online.txt'); /* Тут люди */ foreach ($f as $line) { $nickname = trim(substr($line, 18)); $mas[$nickname] = '0'; } echo "<pre>"; print_r ($mas); /* Выведет Array ( [Ufo1] => 0 [Ufo2] => 0 [Ufo3] => 0 [Ufo4] => 0 ) */ $keys = array_keys($mas); /* foreach ($keys as $key) { echo $key, ' '; } или проще: */ echo implode(' ', $keys); /* Выведет Ufo1 Ufo2 Ufo3 Ufo4 */
или проще: PHP: <? $mas = []; $f = file('online.txt'); /* Тут люди */ foreach ($f as $line) $mas[] = trim(mb_substr($line, 18)); echo implode(' ', $mas); /* Выведет Ufo1 Ufo2 Ufo3 Ufo4 */
Судя по тексту поста и коду, автору таки нужен ассоциативный массив ['Ufo1' => '0', 'Ufo2' => '0', 'Ufo3' => '0', 'Ufo4' => '0'] а не простой ['Ufo1', 'Ufo2', 'Ufo3', 'Ufo4']. Но это не точно. )
Думаю, что автору нужен конечный результат - массив ключей, а не получение для этого ассоциативного массива с 0 значениями...
Он же написал, что ему нужны $key => '0', просто сам не понял, что назвал правильным массив массивов, а в реале похоже нужен обычный ассоциативный. --- Добавлено --- Короче в цикле не $mas[] = [$nickname => '0']; а $mas[$nickname] = '0'; --- Добавлено --- Чем заменить '0', он найдет