こんにちは、次のような配列の出力があります。
Array (
[0] => 66, 65, 64
[1] => 57
[2] => 66,23
[3] => 66
)
重複値を削除し、コレクションをカンマ区切りの文字列に変換するにはどうすればよいですか? 固有の出力は66,65,64,57,23
. ありがとう
こんにちは、次のような配列の出力があります。
Array (
[0] => 66, 65, 64
[1] => 57
[2] => 66,23
[3] => 66
)
重複値を削除し、コレクションをカンマ区切りの文字列に変換するにはどうすればよいですか? 固有の出力は66,65,64,57,23
. ありがとう
とを利用array_unique()
しarray_reverse()
ます。
$array = Array (
0 => '66, 65, 64',
1 => '57',
2 => '66,23',
3 => '66',
);
$collection = array();
foreach($array as $numbers) {
$nums = explode(',', $numbers);
foreach($nums as $num) {
$collection[] = trim($num);
}
}
// unique and sort
$collection = array_unique($collection, SORT_NUMERIC);
// reverse it so that it can be descending order
$collection = array_reverse($collection);
print_r($collection);
出力します:
Array (
[0] => 66
[1] => 65
[2] => 64
[3] => 57
[4] => 23
)
配列を反復処理し、値をチェックして最終的な配列に追加しimplode
、文字列を作成します。
$array = Array (
0 => array(66, 65, 64),
1 => array(57),
2 => array(66,23),
3 => array( 66)
);
$final = array();
foreach ($array as $item) {
foreach ($item as $num) {
if (!in_array($num, $final)) $final[] = $num;
}
}
$str = implode(",", $final);
echo $str
まあ、コードは醜いです...
$test = [
'0' => '66, 65',
'1' => '80', '66'
];
$temp = implode(',', array_map('trim', array_unique(explode(',', implode(',', $test)))));
print_r($test);
print_r($temp);
//出力
Array (
[0] => 66, 65
[1] => 80
[2] => 66
)
66,65,80
Ok:
<?php
$array = array(
"66, 65, 64",
57,
"66,23",
66
);
function dosplit($a,$b) {
if (preg_match("/,/",$b)) {
$a = array_merge($a, preg_split('/\s*,\s*/', $b));
} else {
array_push($a, $b);
}
return $a;
}
$result = array_reduce($array, 'dosplit' ,array());
$array = array_unique($result);
出力は次のとおりです。
Array
(
[0] => 66
[1] => 65
[2] => 64
[3] => 57
[5] => 23
)
これはあなたに役立つかもしれません:
$array = array(
"66, 65, 64 ",
"57",
"66,23",
"66",
);
echo "<pre>";
print_r($array);
//to make single line
foreach ($array as $val) {
$singleline.=$val . ",";
}
echo $singleline . "</br>";
//remove the "," end of the value
$endvlaue = rtrim($singleline, ",");
echo $endvlaue;
//make an array
$val = explode(",", $endvlaue);
echo "<pre>";
print_r($val);
echo "<pre>";
//make uniqu
$finalvalue = array_unique($val);
echo "<pre>";
//make , seperator
print_r(implode(",", $finalvalue));