J'ai beaucoup regardé autour du débordement et de Google, mais aucun des résultats ne fonctionne dans mon cas particulier.
J'ai un tableau d'espaces réservés appelé $ holder, dont les valeurs sont les suivantes:
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
)
)
J'essaie d'extraire des valeurs distinctes/uniques de ce tableau multidimensionnel. Le résultat final souhaité est soit une variable contenant (13,121), soit (de préférence) un tableau comme suit: Array ( [0] => 13 [1] => 121 )
Encore une fois, j'ai essayé la sérialisation, etc., mais je ne comprends pas très bien comment cela fonctionne lorsque vous utilisez une clé unique dans chaque tableau.
J'ai essayé d'être aussi clair que possible. J'espère que ça a du sens...
Cela semble assez simple: extraire toutes les valeurs pid
dans leur propre tableau, exécutez-le à travers array_unique
:
$uniquePids = array_unique(array_map(function ($i) { return $i['pid']; }, $holder));
La même chose à la longue:
$pids = array();
foreach ($holder as $h) {
$pids[] = $h['pid'];
}
$uniquePids = array_unique($pids);
Dans php> = 5.5, vous pouvez utiliser array_column :
array_unique(array_column($holder, 'pid'));
essaye ça
foreach($arr as $key => $val) {
$new_arr[] = $val['pid'];
}
$uniq_arr = array_unique($new_arr);
Il suffit de le parcourir et d'appliquer un array_unique
sur le résultat:
foreach($holder as $yourValues){
$pids[] = $yourValues['pid'];
}
$yourUniquePids = array_unique($pids);
En supposant que votre tableau s'appelle $ holder:
$unique = array();
foreach( $holder as $h )
if( ! in_array($h, $unique ) )
$unique[] = $h;
est un moyen légèrement plus efficace que via array_unique, je crois. Peut être le même.
Bonjour, essayez le code ci-dessous pour obtenir des valeurs uniques, puis triez ces valeurs.
<?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;
}
merci