valor tipos obtener objetos multidimensional manejo functions buscar array php multidimensional-array unique-values

tipos - php array key value



Cómo obtener un valor único en una matriz multidimensional (7)

He revisado mucho el desbordamiento y en google, pero ninguno de los resultados funciona para mi caso específico.

Tengo una matriz de marcador de posición llamada $ holder, los valores son los siguientes:

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 ) )

Estoy tratando de extraer valores distintos / únicos de esta matriz multidimensional. El resultado final que deseo es una variable que contenga (13,121), o (preferiblemente) una matriz de la siguiente manera: Matriz ([0] => 13 [1] => 121)

Una vez más he intentado serializar y tal, pero no entiendo muy bien cómo funciona cuando se opera con una sola clave en cada matriz.

Traté de ser lo más claro posible. Espero que tenga sentido...


En php> = 5.5 puedes usar array_column :

array_unique(array_column($holder, ''pid''));


Hola, prueba el código que se proporciona a continuación para obtener valores únicos y luego ordena esos valores

<?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; }

Gracias


Para mi situación uso este método

//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>";


Parece bastante simple: extraer todos los valores de pid en su propia matriz, ejecutarlo a través de array_unique :

$uniquePids = array_unique(array_map(function ($i) { return $i[''pid'']; }, $holder));

Lo mismo a mano dura:

$pids = array(); foreach ($holder as $h) { $pids[] = $h[''pid'']; } $uniquePids = array_unique($pids);


Solo itere sobre él y aplique un array_unique en el resultado:

foreach($holder as $yourValues){ $pids[] = $yourValues[''pid'']; } $yourUniquePids = array_unique($pids);


Suponiendo que su matriz se llama $ holder:

$unique = array(); foreach( $holder as $h ) if( ! in_array($h, $unique ) ) $unique[] = $h;

es una forma un poco más eficiente que vía array_unique, creo. Puede ser lo mismo


prueba esto

foreach($arr as $key => $val) { $new_arr[] = $val[''pid'']; } $uniq_arr = array_unique($new_arr);