-2

以下のように配列を取得しています

$teachers=array(array('post_id' => "81",'video_id' => array("81","73")), array('post_id' => "81",'video_id' => array("81","73")));

すべてのKey-Valueが同じである場合、以下のように1つのKey-Value(上記の例のように)のみを表示したいと思います。

表示したい

{ post_id -> array([0]-> 81 [1]-> 73) }

また、以下の例のように異なる場合は、両方の配列を表示する必要があります。

{ $teachers=array(array('post_id' => "81",'video_id' => array("81","73")), 
array('post_id' => "81",'video_id' => array("81", "59")));}

表示したい

{post_id -> array([0]-> 81 [1]-> 73 [2] -> 59) }
4

2 に答える 2

0

この場合でも、array_uniqueを使用できます。

$teachers = array_unique($teachers);

出力:

Array
(
    [0] => Array
        (
            [post_id] => 81
            [video_id] => Array
                (
                    [0] => 81
                    [1] => 73
                )
        )
)

http://codepad.org/eC4FR2fq

ただし、キーのセットが異なる場合は、とを除いて機能しない可能性があることに注意してpost_idくださいvideo_id

注:(string)$ elem1 ===(string)$ elem2の場合に限り、2つの要素は等しいと見なされます。つまり、文字列表現が同じ場合。最初の要素が使用されます。

于 2013-03-16T05:26:11.960 に答える
0
function array_values_recursive($ary)  {
    $lst = array();
    foreach( array_keys($ary) as $k ) {
        $v = $ary[$k];
        if (is_scalar($v)) {
            $lst[] = $v;
        } elseif (is_array($v)) {
            $lst = array_merge($lst,array_values_recursive($v));
        }
    }
    return array_values(array_unique($lst)); // used array_value function for rekey
}
    $teachers=array(
        array('post_id' => "81",'video_id' => array("81","73")),
        array('post_id' => "81",'video_id' => array("81", "59")));

$flat = array_values_recursive($teachers);
print_r($flat); //OUTPUT : Array ( [0] => 81 [1] => 73 [2] => 59 )
于 2013-03-16T05:29:35.310 に答える