Intereting Posts
«Валидатор» Laravel «иногда» терпит неудачу с вложенными массивами Несколько страниц переадресации, которые отображали сообщение раньше, является ли это лучшим методом? Laravel непредвиденная ошибка "пользователь класса содержит 3 абстрактных метода …" Загрузка большого файла с использованием завитка gzzle ver 6 post method не является woking Сообщение Android Base64 String to PHP php – simpleXML Как получить доступ к определенному элементу с тем же именем, что и другие? Создание правил для поля кода, если это поле не отключено Codeigniter Изменить загруженный язык Ошибка PHP Вызов в формат функции участника () в массиве Электронная почта HTML иногда отправляет исходный код Opencart: Ajax json ответ неизвестных персонажей mysql_fetch_assoc () ожидает, что параметр 1 будет ресурсом, boolean задан в C: \ xampp \ htdocs \ qcc \ truckdelivery.php в строке 9 не выбрана база данных Виды доступа в моделях / контроллерах Как создать пользовательские запросы MySQL в CakePHP?

Добавить 2 значения в 1 ключ в массиве PHP

У меня есть результирующий набор данных, который я хочу записать в массив в php. Вот мои данные:

**Name** **Abbrev** Mike M Tom T Jim J 

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

 1|Mike|M 2|Tom|T 3|Jim|j 

Я попробовал array_push ($ values, 'name', 'abbreviation') [псевдокод], который дал мне следующее:

 1|Mike 2|M 3|Tom 4|T 5|Jim 6|J 

Мне нужно взглянуть на этот массив, чтобы получить то же ключевое значение, если я посмотрю «Майк» или «М».

Каков наилучший способ записи моего набора результатов в массив, как указано выше, где имя и аббревиатура разделяют один и тот же ключ?

Solutions Collecting From Web of "Добавить 2 значения в 1 ключ в массиве PHP"

PHP не мой лучший язык, но попробуйте:

 array_push($values, array("Mike", "M")) array_push($values, array("Tom", "T")) array_push($values, array("Jim", "J")) $name1 = $values[1][0] $abbrev1 = $values[1][1] 

или:

 array_push($values, array("name" => "Mike", "abbrev" => "M")) array_push($values, array("name" => "Tom", "abbrev" => "T")) array_push($values, array("name" => "Jim", "abbrev" => "J")) $name1 = $values[1]["name"] $abbrev1 = $values[1]["abbrev"] 

Хитрость заключается в использовании вложенного массива для объединения имен и сокращений в каждой записи.

 $person = array('name' => 'Mike', 'initial' => 'M'); array_push($people, $person); 

Тем не менее, я не уверен, почему вы храните данные отдельно. Исходное значение может быть получено непосредственно из имени через substr($name, 0, 1) .

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

Каждая строка в вашем результирующем наборе уже является массивом, поэтому ее нужно будет добавить в вашу переменную в виде массива.

 array_push($values, array('name', 'abbreviation')); 

Вы можете использовать два отдельных массива, возможно, например:

 $values_names = array(); $values_initials = array(); array_push($values_names, 'Mike'); array_push($values_initials, 'M'); array_push($values_names, 'Tom'); array_push($values_initials, 'T'); array_push($values_names, 'Jim'); array_push($values_initials, 'J'); 

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

возможно, вы создаете для этого простой класс, поскольку аббревиатура представляет собой избыточную информацию в вашем случае

 class Person { public $name; pulbic function __construct($name) { $this->name = (string)$name; } public function getAbbrev() { return substr($this->name, 0, 1); } public function __get($prop) { if ($prop == 'abbrev') { return $this->getAbbrev(); } } } $persons = array( new Person('Mike'), new Person('Tom'), new Person('Jim') ); foreach ($persons as $person) { echo "$person->name ($person->abbrev.)<br/>"; } 

php-массивы работают как таблицы поиска хэша, поэтому для достижения желаемого результата вы можете инициализировать 2 клавиши, один с фактическим значением, а другой с ссылкой, указывающей на первый. Например, вы можете:

 $a = array('m' => 'value'); $a['mike'] = &$a['m']; //notice the end to pass by reference 

Если вы пытаетесь:

 $a = array('m' => 'value'); $a['mike'] = &$a['m']; print_r($a); $a['m'] = 'new_value'; print_r($a); $a['mike'] = 'new_value_2'; print_r($a); 

выход будет:

 Array ( [m] => value [mike] => value ) Array ( [m] => new_value [mike] => new_value ) Array ( [m] => new_value_2 [mike] => new_value_2 ) 

должны установить одно и то же значение для Mike и M для ключей.