Добрый день! Задача: 1. создать ассоциативный массив (это понятно) 2. в новый ассоциативный массив передать первый элемент типа ключ=>значение (это тоже понятно) 3. далее программно необходимо пополнять ассоциативный массив новыми элементами (ключ=>значение); простое присваивание типа $array = array(ключ=>значение) или $array['key'] = value не подходит. функции типа array_push и так далее не подходят, так как нужно пополнять массив новыми элементами ключ=>значение, а не просто заносить значение (value). почему не работает такая конструкция: PHP код: PHP: $array = (!isset($array) ? array($key => $value) : $array+= array($key => $value)); в результате ее работы исполняется только первая часть - $array = array($key => $value), а дальнейшее пополнение массива ($array+= array($key => $value))) не происходит. Не работает и такая конструкция: PHP код: PHP: <?php // просто пример $ar_1 = array('a',' b','c'); $ar_2 = array('d',' e','i'); $ar_3 = array('w',' m','n'); $num = rand(0,2); switch ($num) : case 0 : { $key = 'пример №1'; $value = $ar_1; } break; case 1 : { $key = 'пример №2'; $value = $ar_2; } break; case 2 : { $key = 'пример №3'; $value = $ar_3; } break; endswitch; $array[] = array($key => $value); ?> В результате получаем в массиве только один элемент (ключ-значение), а пополнения в дальнейшем нет. только перезаписывание первого элемента новым. Буду благодарен за любые идеи. Спасибо
PHP: <pre> <?PHP // 1. создать ассоциативный массив (это понятно) $array = array(); //2. в новый ассоциативный массив передать первый элемент типа ключ=>значение (это тоже понятно) $key = 'key1'; $value = 'value1'; $array[$key] = $value; //3. далее программно необходимо пополнять ассоциативный массив новыми элементами (ключ=>значение); $key = array ('mkey1','mkey2','mkey3','mkey4'); $value = array ('mvalue1', 'mvalue2', 'mvalue3', 'mvalue4'); for ($i = 0; $i<count($key); $i++) { $array[$key[$i]] = $value[$i]; } print_r ($array);
спасибо, это отличное решение есои заранее известны и ключи и значения. а у меня задача несколько иная: по ходу выполнения программы создаюся пары (ключ-значение) мне необходимо их вносить последовательно в некий массив (в конец или начало без разницы). например, массив = (ключ1-значение1, ключ2-значение2 и так далее), то есть все время пополняя массив новыми элементами. приведенный выше пример - просто моделироывание ситуации и только. спасибо
если вам все ясно тогда детальный алгоритм PHP: <?php ## генерируем $key ... ## генерируем $value ... ## записываем в массив новый элемент $array[$key] = $value; ... ## генерируем $key ... ## генерируем $value ... ## записываем в массив новый элемент $array[$key] = $value; ... ## генерируем $key ... ## генерируем $value ... ## записываем в массив новый элемент $array[$key] = $value; ... ## генерируем $key ... ## генерируем $value ... ## записываем в массив новый элемент $array[$key] = $value; ... ##просмотр результата print_r ($array);
В PHP элемент в массив добавляют обычно так: имя массивах[индекс элемента]=значение элемента; При этом неважно- индекс элемента это строка(для ассоциативных массивов) или целое число для числовых массивов. Так что можешь добавлять так PHP: $array[$key]=$value;
тогда почему моя модель не работает, ведь принцип же тот же? PHP: <?php // просто пример $ar_1 = array('a',' b','c'); $ar_2 = array('d',' e','i'); $ar_3 = array('w',' m','n'); $num = rand(0,2); switch ($num) : case 0 : { $key = 'пример №1'; $value = $ar_1; } break; case 1 : { $key = 'пример №2'; $value = $ar_2; } break; case 2 : { $key = 'пример №3'; $value = $ar_3; } break; endswitch; $array[$key] = $value; ?> по идее массив должен пополняться, а он опять протсо перезаписывает первый элемент. спасибо.
я вас не понимаю, в вашем коде черным по белому написано что вы определяете 1 элемент массива. Какие там еще могут быть элементы , кроме первого?
тогда, извините, вы не поняли меня. с первым элементом в массиве все здорово. он создается без проблем, но потом по ходу выполнения сценария в этот же массив необходимо записывать новые значение ключ-значение и в этом то вся проблема. если можете подскажите реальное ее решение. спасибо за любую помощь
ЛЫКО-МОЧАЛО - НАЧИНАЙ СНАЧАЛА погу посоветовать вам вывести ваш массив $array из вашего кода фукцией print_r и на этом все .я сделал все что мог, ситуация безнадежна.
В первом своем посте я очень четко описал задачу: Задача: 1. создать ассоциативный массив (это понятно) 2. в новый ассоциативный массив передать первый элемент типа ключ=>значение (это тоже понятно) и с первым элементом вопроос нет, есть вопросы как добавлять следующие пары в ассоциативный массив. уже выводил, там запись первого элемента и все. спасибо
нет у бога решения просить не будем, решение должно быть. может все же кто-то поможет из именитых мастеров php? спасибо
Andriy к этому могут присоединиться абсолютно все программисты и не только именитые. Поскольку это не то, что ты хочешь, значит твоя проблема несколько иная, чем ты ее описал. Вот смотри-я записываю твой код в отдельный файл скрипта и запускаю его в браузере. У меня в $array один всего элемент. Обновляю страницу- у меня снова в $array один всего элемент. Обновляю еще раз страницу- у меня опять в $array один всего элемент. Теперь вопрос: ты хочешь чтобы после третьего выполнения скрипта в массиве было 3 элемента?
конечно, я уже из поста в пост описываю одно и тоже. есть переменные ключ и значение, которым по ходу выполнения сценария присваиваются разные значение. Внимание : одна переменная ключ и одна переменная значение! далее создаем массив, как добавить первую пару (ключ1-значение1) мне понятно - проблем нет, а вот далее нужно каждую новую пару из переменных ключа и значания сохранять в ассоциированном массиве. массив = (ключ1-значение1, ключ2-значание2 и так далее) спасибо за любую помощь!
ёпта)) $arr_Array[$str_Key] = $mix_Value; пример: $str_Key = 'testkey'; $arr_Array = array(); for($i=1; $i<=10; $i++){ $arr_Array[$str_Key.$i] = $i; } var_dump($arr_Array); массив получается аналогичный array('testkey1'=>1,'testkey2'=>2,...,'testkey10'=>10); ps: я прочитал всю ветку и последний пост. не нужно гнать, просто попробуй.
Так тебе нужно добавлять элементы в сессионную переменную PHP: <?php session_start( ); if(!isset($_SESSION['array'])) { $_SESSION['array']=array(); } // просто пример $ar_1 = array('a',' b','c'); $ar_2 = array('d',' e','i'); $ar_3 = array('w',' m','n'); $num = rand(0,2); switch ($num) : case 0 : { $key = 'пример №1'; $value = $ar_1; } break; case 1 : { $key = 'пример №2'; $value = $ar_2; } break; case 2 : { $key = 'пример №3'; $value = $ar_3; } break; endswitch; $_SESSION['array'][$key] = $value; ?>
titch отличное добавление, если заранее известна длина массива, в моем случае она НЕИЗВЕСТНА! я дополнил код: PHP: <?php session_start( ); if(!isset($_SESSION['array'])) { $_SESSION['array']=array(); } // просто пример $ar_1 = array('a',' b','c'); $ar_2 = array('d',' e','i'); $ar_3 = array('w',' m','n'); $num = rand(0,2); switch ($num) : case 0 : { $key = 'пример №1'; $value = $ar_1; } break; case 1 : { $key = 'пример №2'; $value = $ar_2; } break; case 2 : { $key = 'пример №3'; $value = $ar_3; } break; endswitch; $_SESSION['array'][$key] = $value; $array[] = $_SESSION['array']; print_r($array); ?> и вот что получил: Код (Text): Array ( [пример №1] => Array ( [0] => a [1] => b [2] => c ) [0] => Array ( [пример №1] => Array ( [0] => a [1] => b [2] => c ) [0] => Array ( [пример №1] => Array ( [0] => a [1] => b [2] => c ) [0] => ) ) [пример №2] => Array ( [0] => d [1] => e [2] => i ) [1] => Array ( [пример №1] => Array ( [0] => a [1] => b [2] => c ) [0] => Array ( [пример №1] => Array ( [0] => a [1] => b [2] => c ) [0] => Array ( [пример №1] => Array ( [0] => a [1] => b [2] => c ) [0] => ) ) [пример №2] => Array ( [0] => d [1] => e [2] => i ) [1] => Array *RECURSION* ) ) что-то много повторяющихся элементов, вместо (ключ1-значение1, ключ2-значение2, ключ3-значение3) или что-то нужно поправить? спасибо
какая к чертям собачьим длина массива? о_О у меня ни одна из итераций не зависит ни от предыдущей, ни от следующей. тебе уже все показали конструкцию, которая полностью автономна. чего огрызаешься?
во-первых я не огрызаюсь, во-вторых смотрите сами: for($i=1; $i<=10; $i++) - ваш код длина массива равна 10, у меня не известна, создается в процессе выполнения скрипта. в третьих единственное что-то похожее на решение предложил runner, но я ще мало знаком с подобным использованием ссесий и хотел бы продолжить с ним диалог как поправить код, чтобы в масстве сохранялись сгенерированные переменные ключей и значений. спасибо
сессии тут вообще ни при чём. циклы - тоже. боюсь, если я вам напишу вот так: PHP: <? $arr_Array = array(); $res = mysql_query('SELECT key, value FROM tab_arr WHERE value>0'); while($row = mysql_fetch_assoc($res)){ $str_Key = $row['key']; $mix_Value = $row['value']; $arr_Array[$str_Key] = $mix_Value; } var_dump($arr_Array); вы мне напишете, что у вас структура базы другая, а еще у вам нужны значения меньше 3, а не больше нуля, и, наверняка, у меня еще где-то опечатка и вообще, если скопировать этот код, то он не работает.
titch нет вы все нормально пишете, просто у меня не ставится задача сохранять эти данные в базе данных, я хочу сохранить их в ассоциативном массиве и вроде уже нащупалось решение runner, но его нет на форуме или он не видит этой ветки, в его решении есть идея, но я получаю пока там много лишего и его надо убрать, но как или как то по другому выводить результат после сессии. спсибо вам за участие.