Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как разделить массив конфига на ключи и значения?

Как разделить массив конфига на ключи и значения?


     09.11.2014    Общие вопросы, Общие вопросы по PHP    2739

вопрос
Всем привет, подскажите пожалуйста как разделить ключи и значения ключей в файле конфига?
Пробовал сделать так:

// конфигурация смайликов
$config = array (
    'smiles' =>
        'nya' => 'nya0-99',
        'troll' => 'troll0-99',
        'angeldemon' => 'angeldemon0-99',
        'rokey' => 'rokey0-99',
        'yolks' => 'yolks0-99',
        'makinyaki' => 'makinyaki0-99',
// каталоги_смайликов => имена_смайликов
);

// код вывода смайликов
$smiles = explode(',', $config['smiles']);
foreach($smiles as $value) {
    $value = trim($value);
    echo $value . ' <br>'; // вывод списка смайликов и их каталогов
}

Всё выводится, но выводится все вместе, то есть так: каталоги_смайликов => имена_смайликов.
Так вот, а как разделить на отдельные значения каталоги_смайликов и имена_смайликов??

Ответил: ПафНутиЙ


Во-первых массив у вас кривой, отсюда и все проблемы.
Вот решене
<?
// конфигурация смайликов
$config = array (
    'smiles' => array(
        'nya' => 'nya0-99',
        'troll' => 'troll0-99',
        'angeldemon' => 'angeldemon0-99',
        'rokey' => 'rokey0-99',
        'yolks' => 'yolks0-99',
        'makinyaki' => 'makinyaki0-99',
      )
// каталоги_смайликов => имена_смайликов
);
$keys = $values = array();
// код вывода смайликов
foreach($config['smiles'] as $key => $value) {
    $keys[] = $key;
    $values[] = $value;
}
echo (implode('<br>', $keys));
echo "<hr>";
echo (implode('<br>', $values));

7 комментариев

lutskboy
Эксперт

lutskboy - 9 ноября 2014 21:08 -

Прочитайте про ф-ю foreach

pavel31
Юзер

pavel31 - 9 ноября 2014 21:10 -

lutskboy,
Я знаю функцию foreach, вы лучше внимательней почитайте мой вопрос!

FastFud
Юзер

FastFud - 9 ноября 2014 21:33 -

$smiles = array(
    'nya' => 'nya0-99',
        'troll' => 'troll0-99',
        'angeldemon' => 'angeldemon0-99',
        'rokey' => 'rokey0-99',
        'yolks' => 'yolks0-99',
        'makinyaki' => 'makinyaki0-99');

for ($i = 0; $i <  count($smiles); $i++) {
    $key = key($smiles);
    $val = $smiles[$key];
    if ($val<> ' ') {
        echo $key .": ".  $val ." <br> ";
       }
     next($smiles);
} или
$smiles = array(
        'nya' => 'nya0-99',
        'troll' => 'troll0-99',
        'angeldemon' => 'angeldemon0-99',
        'rokey' => 'rokey0-99',
        'yolks' => 'yolks0-99',
        'makinyaki' => 'makinyaki0-99');
foreach ($smiles as $key => $value) {
    echo $key . " : " . $value . "<br />";
}

pavel31
Юзер

pavel31 - 9 ноября 2014 21:58 -

FastFud,
Вы меня похоже не так поняли, это я знаю, что так можно вывести, у меня другая проблема.
Вот из этого 'nya' => "nya0 нужно отдельно получить nya и nya0 но только отдельно, а не в одном массиве.

Attyla
Юзер

Attyla - 9 ноября 2014 22:24 -

Можете попробовать через:
http://php.net/manual/ru/function.str-replace.php

pavel31
Юзер

pavel31 - 9 ноября 2014 22:59 -

Attyla,
И как же я по Вашему одну переменную $value с помощью функции str_replace разделю на две отдельные переменные? если Вы знаете как это сделать - подскажите мне, хотя я лично не представляю как это возможно.

pavel31
Юзер

pavel31 - 10 ноября 2014 00:58 -

ПАФНУТИЙ, спасибо Вам за правильный ответ, проблема действительно была в конфиге. Теперь все работает.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх