我试图从多维数组内的多维数组获取值。这是多维数组…
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)
,如果你想
像这样?
$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()
会更有效(更少的函数调用)。