0

配列と配列オブジェクトという 2 つの異なるデータ型を組み合わせる必要があります。

次に、特定の属性 (日付) の順序でページに表示する必要があります。

アクセスのマークアップは次のようになります。

foreach($array as $item){
$item['date'];
}

foreach($object as $item){
$item->post->date
}

array_merge は私が必要とするものですか、それとも何か違うものですか?

データは急速に変化し、ストレージの必要がないため、可能であればその場でこれを行いたいというわけではありません。

ありがとう!

4

4 に答える 4

1
foreach($array as $item){
 $array_new[] = $item['date'];
 }

 foreach($object as $item){
  $array_new[] = $item->post->date;
 }

 sort($array_new);
于 2012-09-19T15:04:15.787 に答える
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 を使用してオブジェクトを配列に変換し、最終的な配列で任意の並べ替え関数を使用できます。重要な部分は、日付で並べ替えたいということです。そのため、日付をキーにする必要があります。

それが役に立ったことを願っています。

于 2012-09-19T15:15:08.783 に答える
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;
}
于 2012-09-19T15:02:58.407 に答える
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 (2 番目のパラメーターに注意してください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
}
于 2012-09-19T15:03:26.400 に答える