Я много размышлял о переполнении и в google, но ни один из результатов не работает для моего конкретного случая.
У меня есть массив заполнителей, называемый $ holder, значения следующие:
Array ( [0] => Array ( [id] => 1 [pid] => 121 [uuid] => 1 ) [1] => Array ( [id] => 2 [pid] => 13 [uuid] => 1 ) [2] => Array ( [id] => 5 [pid] => 121 [uuid] => 1 ) )
Я пытаюсь вытащить отдельные / уникальные значения из этого многомерного массива. Конечным результатом, который мне нужен, является либо переменная, содержащая (13,121), либо (предпочтительнее) массив следующим образом: Array ([0] => 13 [1] => 121)
Опять я пробовал сериализацию и тому подобное, но не совсем понимаю, как это работает при работе с одним ключом в каждом массиве.
Я старался быть предельно ясным. Надеюсь, это имеет смысл …
Кажется довольно простым: извлеките все значения pid
в свой собственный массив, запустите его через array_unique
:
$uniquePids = array_unique(array_map(function ($i) { return $i['pid']; }, $holder));
То же самое в длинном:
$pids = array(); foreach ($holder as $h) { $pids[] = $h['pid']; } $uniquePids = array_unique($pids);
В php> = 5.5 вы можете использовать array_column :
array_unique(array_column($holder, 'pid'));
попробуй это
foreach($arr as $key => $val) { $new_arr[] = $val['pid']; } $uniq_arr = array_unique($new_arr);
Просто переберите его и примените array_unique
к результату:
foreach($holder as $yourValues){ $pids[] = $yourValues['pid']; } $yourUniquePids = array_unique($pids);
Предполагая, что ваш массив называется $ holder:
$unique = array(); foreach( $holder as $h ) if( ! in_array($h, $unique ) ) $unique[] = $h;
это несколько более эффективный способ, чем через array_unique, я считаю. Может быть то же самое.
Привет, пожалуйста, попробуйте приведенный ниже код, чтобы получить уникальные значения, а затем отсортировать значения
<?php $sort_arr = unique_sort($holder, 'pid'); echo "<pre>"; print_r($sort_arr); echo"</pre>"; /*function for get unique value then sort them*/ function unique_sort($arrs, $id) { $unique_arr = array(); foreach ($arrs AS $arr) { if (!in_array($arr[$id], $unique_arr)) { $unique_arr[] = $arr[$id]; } } sort($unique_arr); return $unique_arr; }
благодаря
Для моей ситуации я использую этот метод
//get some data from db to array while ($row = mysqli_fetch_assoc($query)){ $data[] = $row; } //display unique value echo "<table>"; $uniq = array(); foreach ($data as $row) { if(!in_array($row['path'], $uniq)) { $uniq[] = $row['path']; echo "<tr>"; echo "<td>"; echo $row['path']; echo "</td>"; echo "<td>"; echo $row['relationship_id']; echo "</td>"; echo "</tr>"; } } echo "</table>";