[英]Combine object values in a single array by matching object fields in PHP
[英]combine php array, with matching values
我有一組php數組
$arrayOne = (
0 => new,
1 => old,
2 => fresh,
3 => new,
4 => old,
5 => fresh,
6 => new,
7 => old,
8 => fresh,
)
$arrayTwo = (
0 => yellow,
1 => green,
2 => red,
3 => blue,
4 => grey,
5 => orange,
6 => purple,
7=> pink,
8 => brown
)
$arrayThree = (
0 => Monday
1 => Tuesday
2 => Wednesday
3 => Thursday
4 => Friday
5 => Saturday
6 => Sunday
7 => Monday2
8 => Monday3
)
這些數組正在循環並放置在表中
for($index = 0; index < 100; $index++){
$returnVariable .= '<td>'.$ArrayOne[$index].'</td>';
$returnVariable .= '<td>'.$ArrayTwo[$index].'</td>';
$returnVariable .= '<td>'.$ArrayThree[$index].'</td>';
}
當返回並顯示在頁面上時,該表將按預期工作,並且所有與預期的匹配的工作
new yellow monday
old green tuesday
fresh red wednesday
等等,我想將第一列分組,以便它列出所有“新”,然后所有“舊”,然后所有新的,同時保留預期的匹配項,
new yellow monday
new blue thursday
new purple sunday
old green tuesday
old grey friday
old pink Monday2
等
首先,將三個陣列合並為一個。 然后,按第一個值對新數組進行排序(首先是新值,然后是舊值,然后是新值):
<?php
$arrayOne = [
0 => "new",
1 => "old",
2 => "fresh",
3 => "new",
4 => "old",
5 => "fresh",
6 => "new",
7 => "old",
8 => "fresh",
];
$arrayTwo = [
0 => "yellow",
1 => "green",
2 => "red",
3 => "blue",
4 => "grey",
5 => "orange",
6 => "purple",
7=> "pink",
8 => "brow"
];
$arrayThree = [
0 => "Monday",
1 => "Tuesday",
2 => "Wednesday",
3 => "Thursday",
4 => "Friday",
5 => "Saturday",
6 => "Sunday",
7 => "Monday2",
8 => "Monday3",
];
echo "<pre>";
for ($i = 0; $i < count($arrayOne); $i++) {
$array[] = [
$arrayOne[$i],
$arrayTwo[$i],
$arrayThree[$i],
];
}
$values = [ // give these strings a numeric value to compare them
"new" => 0,
"old" => 1,
"fresh" => 2,
];
usort($array, function($a, $b) use ($values) {
return $values[$a[0]] - $values[$b[0]];
});
Create new array to hold all then sort it and implode it into a string
<?php
$arrayOne = array(
0 => "new",
1 => "old",
2 => "fresh",
3 => "new",
4 => "old",
5 => "fresh",
6 => "new",
7 => "old",
8 => "fresh",
);
$arrayTwo = array(
0 => "yellow",
1 => "green",
2 => "red",
3 => "blue",
4 => "grey",
5 => "orange",
6 => "purple",
7=> "pink",
8 => "brown"
);
$arrayThree =array(
0 => "Monday",
1 => "Tuesday",
2 => "Wednesday",
3 => "Thursday",
4 => "Friday",
5 => "Saturday",
6 => "Sunday",
7 => "Monday2",
8 => "Monday3"
);
$returnVariable=array();
for($index = 0; $index<count($arrayOne); $index++){
$returnVariable[$index][0]= '<td>'.$arrayOne[$index].'</td>';
$returnVariable[$index][1]= '<td>'.$arrayTwo[$index].'</td>';
$returnVariable[$index][2]= '<td>'.$arrayThree[$index].'</td>';
}
sort($returnVariable);
echo "<table>";
for ($i=0; $i<count($returnVariable); $i++) {
if (@is_array($returnVariable[$i]))
$returnVariable[$i] = implode($returnVariable[$i]," ");
echo "<tr>";
print $returnVariable[$i];
echo "</tr>";
}
echo "</table>";
簡單的解決方案:
$arrayOne = array(0 => "new",1 => "old",2 => "fresh",3 => "new",4 => "old",5 => "fresh",6 => "new",7 => "old",8 => "fresh",);
$arrayTwo = array(0 => "yellow",1 => "green",2 => "red",3 => "blue",4 => "grey",5 => "orange",6 => "purple",7=> "pink",8 => "brown");
$arrayThree = array(0 => "Monday",1 => "Tuesday",2 => "Wednesday",3 => "Thursday",4 => "Friday",5 => "Saturday",6 => "Sunday",7 => "Monday2",8 => "Monday3");
$result = [];
foreach($arrayOne as $k => $v){
$result[$v][] = "<tr><td>$v</td><td>{$arrayTwo[$k]}</td><td>{$arrayThree[$k]}</td></tr>";
}
echo '<table>';
foreach(['new', 'old', 'fresh'] as $k){
echo implode("", $result[$k]);
}
echo '</table>';
輸出(推送“ Run code snippet ”):
<table border="1"><tr><td>new</td><td>yellow</td><td>Monday</td></tr><tr><td>new</td><td>blue</td><td>Thursday</td></tr><tr><td>new</td><td>purple</td><td>Sunday</td></tr><tr><td>old</td><td>green</td><td>Tuesday</td></tr><tr><td>old</td><td>grey</td><td>Friday</td></tr><tr><td>old</td><td>pink</td><td>Monday2</td></tr><tr><td>fresh</td><td>red</td><td>Wednesday</td></tr><tr><td>fresh</td><td>orange</td><td>Saturday</td></tr><tr><td>fresh</td><td>brown</td><td>Monday3</td></tr></table>
另一種方法是
$row ="";
$temp = array();
foreach($arrayOne as $key => $value){
$temp[$value][] = $key;
}
foreach($temp as $value){
foreach($value as $value2){
$row .= ' '.$arrayOne[$value2].'';
$row .= ' '.$arrayTwo[$value2].'';
$row .= ' '.$arrayThree[$value2]."\n";
}
}
echo $row;
現場演示: https : //eval.in/850007
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.