Intereting Posts
Как очистить URL-адреса буферизация вывода для загрузки файла php Почему изменения в некоторых php-файлах так долго отображаться на живом сайте Как я могу разбить список с несколькими разделителями? Совет по канадскому провайдеру SMS-шлюза Пользователи Yii выходят из системы через 15-30 минут, несмотря на то, что тайм-ауты сеанса установлены как минимум на 1 день Ограничение количества записей, полученных при использовании Doctrine DQL в Symfony2 Загрузить удаленный файл прямо на клиента? Удаление текста между двумя строками в php с использованием preg_replace HTML – Как запретить пользователю изменять значение формы? Как читать файлы .docx, содержащие изображения и текст в php API Google – разрешить соединения только с доменом Google Apps как отправлять электронную почту с localhost с помощью codeigniter? Загрузка файла в Web не работает Удалите все, кроме букв из строки PHP.

Повторяющиеся ключи для ассоциативных массивов PHP

У меня есть ассоциативный массив, однако, когда я добавляю ему значения, используя функцию ниже, он, похоже, перезаписывает одни и те же ключи. Есть ли способ иметь несколько одинаковых ключей с разными значениями? Или есть другая форма массива, которая имеет тот же формат?

Я хочу иметь:

42=>56 42=>86 42=>97 51=>64 51=>52 etc etc 

Код:

  function array_push_associative(&$arr) { $args = func_get_args(); foreach ($args as $arg) { if (is_array($arg)) { foreach ($arg as $key => $value) { $arr[$key] = $value; $ret++; } }else{ $arr[$arg] = ""; } } return $ret; } 

Solutions Collecting From Web of "Повторяющиеся ключи для ассоциативных массивов PHP"

Нет, вы не можете иметь несколько одинаковых ключей в ассоциативном массиве.

Однако у вас могут быть уникальные ключи, каждый из которых соответствует массивам, и эти массивы имеют несколько элементов для каждого ключа.

Поэтому вместо этого …

 42=>56 42=>86 42=>97 51=>64 51=>52 

… у вас есть это:

 Array ( 42 => Array ( 56, 86, 97 ) 51 => Array ( 64, 52 ) ) 

Ключ – это расширение переменной. Если вы перезаписываете переменную … вы перезаписываете переменную.

Нет, не может быть. Обходной путь, который я использую, состоит в том, чтобы каждая пара ключей / значений была новым массивом с двумя элементами:

 $test = array( array(42,56), array(42,86), array(42,97), array(51,64), array(51,52) ) 

Например, вы можете получить доступ ко второму ключу (= 42), используя:

 $test[1][0] 

и второе значение (= 86), используя:

  $test[1][1] 

Мне тоже нужно было создать массив с теми же ключами (просто чтобы сохранить производительность, используя две петли, а не 4 цикла).

с помощью этого: [$ increment. "-". $ domain_id] => $ article_id; мой список статей в каждом домене выглядит так после print_r ():

 $AllSa = Array ( [1-5] => 143 [2-5] => 176 [3-5] => 992 [4-2] => 60 [5-2] => 41 [6-2] => 1002 [4-45] => 5 [5-45] => 18 [6-45] => 20 ) 

И затем, перейдя через эту таблицу, чтобы связать статью по домену:

 $AssocSAPerDomain = array(); $TempDomain = ""; $TempDomain_first = 0; foreach($tree_array as $id_domain => $id_sa){ if( !$TempDomain && $TempDomain_first == 0 ){ $TempDomain = substr(strrchr($id_domain, "-"), 1); $TempDomain_first = 1; } $currentDomain = substr(strrchr($id_domain, "-"), 1); //if($TempDomain == $currentDomain) $AssocSAPerDomain[$currentDomain][] = $id_sa; $TempDomain = substr(strrchr($id_domain, "-"), 1); } 

вы получаете это

 $assoc= Array ( [5] => 143 => 176 => 992 [2] => 60 => 41 => 1002 [45]=> 5 => 18 => 20 ) 

Я нашел этот вопрос, исследуя совершенно противоположный предполагаемый результат, у меня есть массив данных с дублирующими ключами! Вот как я это сделал (все еще пытаюсь выяснить, где в моем процессе все испортится).

 $session = time(); $a = array(); $a[(string)$session] = 0; $j = json_encode($a,JSON_FORCE_OBJECT); print_r($a); /* output: Array ( [1510768034] => 0 ) */ var_dump($a); /* output: array(1) ( [1510768034] => int(0) ) */ print_r($j); /* output: {"1510768034":0} */ $a = (array)json_decode($j); $session = @array_pop(array_keys($a)); $a[(string)$session] = 10; $j = json_encode($a,JSON_FORCE_OBJECT); print_r($a); /* output: Array ( [1510768034] => 0 [1510768034] => 10 ) */ var_dump($a); /* output: array(2) ( '1510768034' => int(0) [1510768034] => int(10) ) */ print_r($j); /* output: {"1510768034":0,"1510768034":10} */ 

Да, это только что произошло.

PHP 7.1