Технический сбой

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

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


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

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

// конфигурация смайликов
$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 - -

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

pavel31
Юзер

pavel31 - -

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

FastFud
Юзер

FastFud - -

$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 - -

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

Attyla
Юзер

Attyla - -

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

pavel31
Юзер

pavel31 - -

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

pavel31
Юзер

pavel31 - -

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

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

наверх