-2

我得到的数组如下

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

如果所有键值都相同,我只想显示一个键值(如上例),如下所示:

我想展示

{ 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
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 回答
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 时,才认为两个元素相等。换句话说:当字符串表示相同时。将使用第一个元素。

于 2013-03-16T05:26:11.960 回答