0

この配列を考えると:

Array
(
[0] => Array
    (
        [title] => this is the newest post
        [ssm_featured_post_id] => 70
    )

[1] => Array
    (
        [title] => sdfsfsdf
        [ssm_featured_post_id] => 63
    )

[2] => Array
    (
        [title] => test
        [ssm_featured_post_id] => 49
    )

[3] => Array
    (
        [title] => Hello world!
        [ssm_featured_post_id] => 1
    )

)

別の同様の配列を新しい値とマージする最も簡単な方法は何ですか?

2 番目の配列には、新しい項目または削除された項目が含まれる場合があります。

最初の配列のアイテムの順序を維持し、新しいアイテムを最後に追加し、新しい配列にないアイテムを削除したい

Array
(
[0] => Array
    (
        [title] => sdfsfsdf
        [ssm_featured_post_id] => 63
    )

[1] => Array
    (
        [title] => this is the newest post
        [ssm_featured_post_id] => 70
    )

[2] => Array
    (
        [title] => test
        [ssm_featured_post_id] => 49
    )

[3] => Array
    (

        [title] => Hello world!
        [ssm_featured_post_id] => 1
    )

[4] => Array
    (
        [title] => awesome post
        [ssm_featured_post_id] => 73
    )

)
4

3 に答える 3

1

独自の比較関数を実装できる関数uasortを使用できます

function cmp($a, $b) {
    if ($a['ssm_featured_post_id'] == $b['ssm_featured_post_id']) {
        return 0;
    }
    return ($a['ssm_featured_post_id'] < $b['ssm_featured_post_id']) ? -1 : 1; 
}

uasort($array, 'cmp');

重複したアイテムを削除するには、配列を渡して重複したアイテムをスキャンします

$last_id=-1;
for($i=0; $i < cout($array); $i++){
  if($last_id==$array[$i]['ssm_featured_post_id']){
    unset($array[$i]);//Remove Duplicated Item
  }
  $last_id=$array[$i]['ssm_featured_post_id'];
}
于 2012-10-30T21:42:07.577 に答える
0

キーは数値であるため、array_merge を使用します。「入力配列に同じ文字列キーがある場合、そのキーの後の値は前の値を上書きします。ただし、配列に数値キーが含まれている場合、後の値は元の値を上書きしません」 http://php. net/manual/en/function.array-merge.php

于 2012-10-30T21:40:45.320 に答える
0

さて、配列 2 を配列 1 に対してチェックし、配列 2 から新しいものをマージする必要があったため、この解決策は機能しているようです。

$new_values = array_merge( $slides, $featured_posts );
$new_values = array_unique( $new_values, SORT_REGULAR );
于 2012-10-31T00:34:21.293 に答える