从多维数组内的多维数组中获取唯一值



我试图从多维数组内的多维数组获取值。这是多维数组…

Array
(
    [0] => Array
        (
            [CalID] => 121111
            [Rink] => North
            [TimeChunks] => Array
                (
                    [int] => Array
                        (
                            [0] => 6
                            [1] => 4
                            [2] => 3
                            [3] => 2
                            [4] => 1
                        )
                )
        )
    [1] => Array
        (
            [CalID] => 121111
            [Rink] => South
            [TimeChunks] => Array
                (
                    [int] => Array
                        (
                            [0] => 4
                            [1] => 2
                        )
                )

        )
)

我想从[TimeChunks][int]中获取有效的时间块,即:1,2,3,4,6,8,但我似乎无法深入到第二个多维数组。以下是我一直在尝试但没有成功的方法:

    $tmp = array ();
foreach ($a as $row) 
    if (!in_array($row,$tmp)) array_push($tmp,$row);
print_r ($tmp);

有什么建议吗?

$tmp = array();
foreach ($a AS $row) {
  if (isset($row['TimeChunks']['int']) && is_array($row['TimeChunks']['int'])) {
    $tmp = array_merge($tmp, $row['TimeChunks']['int']);
  }
}
$tmp = array_unique($tmp);

如果数组键对您来说不重要,可以使用这个方法。它只是将不同[TimeChunks][int]中的所有值组合在一起,然后删除重复的值。

你根本没有在数组中的'TimeChunks'键中循环数组,试试这个:

foreach ($a as $row) {
  foreach ($row['TimeChunks'] as $chunk) {
    if (!in_array($row,$chunk)) array_push($tmp,$$chunk);
  }
}

为什么不使用foreach($a as $key=> $value)

,如果你想

,你可以在键和值上使用if语句

像这样?

$tmp = array();
foreach ($array as $section) { // Loop outer array
  if (isset($section['TimeChunks']['int'])) { // make sure ['TimeChunks']['int'] is set for this inner array
    foreach ($section['TimeChunks']['int'] as $chunk) { // Loop the time chunks
      $tmp[] = $chunk; // Push the chunks onto the $tmp array
    }
  }
}
$tmp = array_unique($tmp); // Remove duplicate values
print_r($tmp);

您必须循环遍历外部数组,获取['TimeChunks']['int']键的内容并将其推入$tmp数组。您可以在每次迭代中执行in_array()检查,但是将它们全部添加到$tmp数组并随后将其传递给array_unique()会更有效(更少的函数调用)。

相关内容

  • 没有找到相关文章

最新更新