簡體   English   中英

PHP從多維數組內的多維數組獲取唯一值

[英]PHP Getting unique values from multidimensional array inside a multidimensional array

我正在嘗試從多維數組內的多維數組獲取值。 這是多維數組...

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);

有什么建議么?

您根本不需要遍歷數組中“ TimeChunks”鍵中的數組,請嘗試以下操作:

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

像這樣嗎

$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()其通過array_unique()會更有效(減少函數調用)。

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

那么您可以在鍵和值上使用if語句

$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]中的值組合在一起,然后再刪除重復項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM