私はオーバーフローとグーグルで多くのことを調べましたが、私の特定のケースでは結果が機能しません。
$ 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'));
配列が$ holderと呼ばれると仮定します:
$unique = array();
foreach( $holder as $h )
if( ! in_array($h, $unique ) )
$unique[] = $h;
array_uniqueを経由するよりも少し効率的な方法だと思います。同じかもしれません。
これを試して
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);
こんにちは以下のコードを試して一意の値を取得し、その値を並べ替えてください
<?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;
}
ありがとう