Извините за мой плохой Энгли sh, но у меня есть проблема, которую я не могу решить. У меня есть массивы, которые содержат массивы с ключевыми «тегами» (я буду называть его «тег-массив»). В некоторых тегах-массивах используются одинаковые значения, поэтому я хочу создать один массив, который будет содержать значения из тег-массивов без повторений.
список значений, которые у меня есть в массивах тегов:
=================
php
bootstrap
html
css
=================
php
=================
bootstrap
=================
laravel
=================
php
Пример массива, который содержит массив тегов:
Array
(
[0] => Array
(
[id] => 5
[project_name] => Something 5
[info_1] => Some test information 1
[tags] => Array
(
[0] => php
[1] => html
[2] => bootstrap
[3] => css
)
[img_1] => 1.jpg
)
[1] => Array(...)
[2] => Array(...)
[3] => Array(...)
[4] => Array(...)
}
Что я сделал, чтобы создать новый отсортированный массив:
public function sortTags($data){
$works_number = $this->getCountWorks(); //count arrays
$new_arr = array();
for($i=0; $i < $works_number; $i++){
foreach ($data[$i]['tags'] as $key => $val) {
if(!in_array($val, $new_arr)){
array_push($new_arr, $val);
}
}
}
echo "Debug : <br /> <pre>";
print_r($new_arr);
echo "<pre>";
}
Что и ожидалось:
Array
(
[0] => php
[1] => html
[2] => bootstrap
[3] => css
[6] => laravel
)
Реальное восстановление (посмотрите, что у меня есть еще один массив, где также есть "php", но функция отсортировала его и не записала):
Array
(
[0] => php
[1] => html
[2] => bootstrap
[3] => css
[4] => php
[5] => bootstrap
[6] => laravel
)
Так почему же моя функция не делает то, что я хочу (и как это исправить) и почему функция SORTED LAST ELEMENT?