PHP: заполнить определенное значение массива, определенного ключом, переменными - PullRequest
2 голосов
/ 25 ноября 2011

Я пытаюсь заполнить определенное значение массива, определенного ключом, переменными. Значение содержит форму для синтаксиса, ключ является идентификатором для него.

Я не уверен, что это правильный путь, но у меня проблемы:

function create_mess($data){
    echo message_list($data);   
    }

function message_list($data){
    $messages = array(
        1000 => $data['user']." logged on!",
        2000 => $data['user']." comment on ".$data['user_rep']."s comment about!".$data['title'],
        2010 => "You just received a reply to".$data['title']."by ".$data['user'],
        3000 => $data['user'].": ".$data['title']."!"
    );

    return $messages[$data['mess_id']];
    }

Это урезанная версия того, что у меня есть, чтобы прояснить ситуацию. Я знаю, что функция create_mess сейчас не очень полезна.

В настоящее время он всегда заполняет все переменные. То, что я хочу знать, это:

  • Можно ли заполнить переменные только для идентификатора ключа, который вы передаете через функцию?
  • Возможно ли это с массивом?
  • Или только если эти предложения хранятся в БД?

Ответы [ 2 ]

1 голос
/ 25 ноября 2011
    foreach($messages as $key => &$message)
        if($key != $data['mess_id'])
            unset($messages[$data['mess_id']];

это просто урезает массив после заполнения всех значений (неэффективно).Если вы хотите условно заполнить массив, вам придется построить некоторую логику вокруг создания массива, который вы хотите вернуть, основываясь на идентификаторе сообщения.Например: обработайте ваш текущий массив сообщений как «шаблон» для создания вторичного массива, который вы вернете.

0 голосов
/ 25 ноября 2011

Если я правильно вас понимаю, да.Вы можете объявить аргументы как null: function create_mess ($ key1 = null, $ key2 = null) {etc ...}

Вы можете передать его как массив, затем использовать list :function create_mess ($ array) {list ($ key1, $ key2) = $ array;}

Если это не то, что вы ищете, вам нужно быть немного более конкретным.

...