我需要组合两种不同的数据类型,一个数组和一个数组对象。
然后我需要按照某个属性(日期)的顺序在页面上显示它们。
访问标记类似于以下内容:
foreach($array as $item){
$item['date'];
}
和
foreach($object as $item){
$item->post->date
}
是array_merge我需要什么,或者不同的东西?
如果可能的话,我不想这样做,因为数据会快速变化而且不需要存储。
谢谢!
答案 0 :(得分:1)
foreach($array as $item){
$array_new[] = $item['date'];
}
foreach($object as $item){
$array_new[] = $item->post->date;
}
sort($array_new);
答案 1 :(得分:1)
我将如何做到这一点:
// array we will use for sorting
$finalArray = array();
// add the array's using the date as the key
foreach($array as $item){
$key = $item['date']; // use date here, example $key = date('l \t\h\e jS',$item['date']);
$finalArray[$key] = $item;
}
// add the objects's using the date as the key
foreach($object as $item){
$finalArray[$item->post->date] = $item;
}
//now sort by keys as Xeoncross noted
ksort($finalArray);
foreach($finalArray as $date=>$objOrArray){
if(is_array($objOrArray)){
//do your array printing here
} else {
//do your object printing here
}
}
当然,我们可以使用get_object_vars将对象转换为数组,并使用最终数组上的任何排序函数,重要的部分是我们希望按日期排序,这就是我们需要它作为键的原因。
希望有所帮助。
答案 2 :(得分:0)
$dates = array();
foreach ($array as $item) {
$dates[] = $item['date'];
}
foreach ($object as $item) {
$dates[] = $item->post->date;
}
sort($dates);
foreach ($dates as $date) {
echo $date;
}
答案 3 :(得分:0)
如果您需要来自对象的多个值(不仅仅是date
)而且您不介意删除重复项,则可以尝试此操作。
// $array is already defined right?
$object = json_decode(json_encode($object), TRUE);
$data = array_merge($array, $object);
print_r($data); // now test it
http://us2.php.net/array_merge
http://us3.php.net/json_decode(请注意第二个TRUE
参数)
根据Perfection的回答,(并重新阅读问题)我会这样做:
$finalArray = array();
foreach($array as $item)
{
$finalArray[$item['date']] = $item;
}
foreach($object as $item)
{
$finalArray[$item->post->date] = json_decode(json_encode($item), TRUE);
}
ksort($finalArray);
foreach($finalArray as $date => $item)
{
// Everything is an array now
}