2013-08-25 2 views
0

Я работаю над возможностью добавления получателей из списка контактов в массив, чтобы контакты из массива могли использоваться в качестве получателей в сообщении. Я достаточно хорошо разбираюсь в массивах для базового использования, но имею неприятную проблему. Мой список контактов динамически генерируется в списке с этим;Добавление объектов в массив - перезаписывает вместо добавлений

{ 
$contact = $row['contact']; 
echo "<tr>"; 
echo "<td><font color=#808080><a href='mypagepost.php?contact=$contact' STYLE='TEXT- DECORATION: NONE'><font color=#808080>" . $row['contact'] . "</a></font></td>"; 
echo "</tr>"; 
} 

Таким образом, каждый контакт является переменным $ contact. Когда вы нажимаете на контакт, вы попадаете на mypagepost.php, где это происходит;

$messagerecipient = array(); 
$contact = $_GET['contact']; 
$messagerecipient[] = "$contact"; 

Я могу распечатать содержимое массива, никаких проблем. Однако каждый раз, когда я добавляю новый контакт, он перезаписывает контакт в [0]. Если я вручную добавлю новые контакты с более поздними записями $ messagerecipient, например;

$messagerecipient[] = "Confused"; 
$messagerecipient[] = "Oh, man"; 

он увеличивает их просто отлично; Массив ([0] => csmith [1] => Confused [2] => Oh, man)

Но [0] всегда будет перезаписано при выборе нового контакта. Я подумал, что, возможно, мне нужно сделать массив в сеансе, но он делает то же самое. Может кто-то порекомендовать способ сделать это? Мне нужно, чтобы каждый контакт добавлялся к массиву для увеличения (и, в конечном счете, я собираюсь настроить что-то, что позволит мне удалить записи из массива). Любая помощь приветствуется.

+0

Ну с сеансом вы на самом деле на правильном пути, потому что он не перезаписывается, он просто добавляет. До этого массив просто пуст, потому что скрипт вызывается новым временем, поэтому все переменные пусты (лучше: не заданы) по умолчанию. – hakre

ответ

2

Сделать переменную сеанса, скажем $_SESSION['messagerecipient']; а затем подтолкнуть значения этой переменной, используя array_push

Eg: array session variables

+0

Он делает то же самое. Как это? $ messagerecipient = array(); $ contact = $ _GET ['контакт']; $ _SESSION ['recipientlist'] = $ messagerecipient; array_push ($ _ SESSION ['recipientlist'], $ contact); – Kimomaru

+1

Объявите переменную сеанса в начале вашего приложения, а не снова и снова. вот почему значения не добавляются. Можете ли вы опубликовать свою попытку с переменными сеанса –

+0

$ _SESSION ['recipientlist'] = $ messagerecipient; находится в верхней части моего приложения на моей второй форме. Вы говорите, что это должно быть в моей первой форме? – Kimomaru

2

Эта строка: $messagerecipient = array(); устанавливает переменную в пустой массив каждый раз перед добавлением контакта. $_SESSION - правильная идея здесь, но я предполагаю, что вы заменили эту строку тем, что создаете пустой массив в $ _SESSION, что вызовет ту же проблему. Вы хотите проверить, установлена ​​ли ваша переменная сеанса первой, а если нет, то создайте ее. Это произойдет при первом выборе получателя; последующие времена должны просто добавлять к существующим через $_SESSION['recipient'][] = $contact (или array_push, как упоминалось Shadowfax - это эквивалентные вызовы). В противном случае каждый раз, когда вы просто сбросите его на пустой.

Смежные вопросы