[英]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.