Привет, У меня есть массив, созданный из файла XML, используя эту функцию.
# LOCATIONS XML HANDLER #creates array holding values of field selected from XML string $xml # @param string $xml # @parm string $field_selection # return array # function locations_xml_handler($xml,$field_selection){ # Init return array $return = array(); # Load XML file into SimpleXML object $xml_obj = simplexml_load_string($xml); # Loop through each location and add data foreach($xml_obj->LocationsData[0]->Location as $location){ $return[] = array("Name" =>$location ->$field_selection,); } # Return array of locations return $return; }
Как я могу прекратить получать повторяющиеся значения или удалять из массива после создания?
Вы можете просто вызвать array_unique
впоследствии:
$return = array_unique($return);
Но обратите внимание:
Примечание . Два элемента считаются равными тогда и только тогда, когда
(string) $elem1 === (string) $elem2
. В словах: когда строковое представление одно и то же. Будет использоваться первый элемент.
Или вместо удаления дубликатов вы можете использовать дополнительный массив для имен и использовать уникальность ключей массива PHP, чтобы избежать дублирования в первую очередь:
$index = array(); foreach ($xml_obj->LocationsData[0]->Location as $location) { if (!array_key_exists($location->$field_selection, $index)) { $return[] = array("Name" => $location->$field_selection,); $index[$location->$field_selection] = true; } }
Но если ваши имена не сопоставимы по строкам, вам нужен другой подход.
http://php.net/manual/en/function.array-unique.php
$input = array(4, "4", "3", 4, 3, "3"); $result = array_unique($input); var_dump($result);