我正在尝试从多维数组中的多维数组中获取值。这是多维数组...
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);
有什么建议吗?
答案 0 :(得分:0)
你根本没有在数组的'TimeChunks'键中循环遍历数组,试试这个:
foreach ($a as $row) {
foreach ($row['TimeChunks'] as $chunk) {
if (!in_array($row,$chunk)) array_push($tmp,$$chunk);
}
}
答案 1 :(得分:0)
这样的东西?
$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()
后,效率会更高(函数调用次数更少)。
答案 2 :(得分:0)
为什么不使用foreach($ a as $ key => $ value)
然后,如果需要,可以在键和值上使用if语句
答案 3 :(得分:0)
$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]中的所有值,然后删除了重复项。